C 创建位的随机数组

C 创建位的随机数组,c,C,使用rand(),我试图创建一个数组,该数组在每次运行程序时生成32个随机数。然而,我下面的程序每次都给我相同的32个随机位。我是否可以让它在每次运行程序时生成不同的32位 for(a=0;a<32;a++) { ran[a]= (rand()%2); } 对于(a=0;a您需要在每次运行程序时设置随机种子,以执行不同的操作。人们通常会这样做: #include <time.h> /* time */ ... srand (

使用rand(),我试图创建一个数组,该数组在每次运行程序时生成32个随机数。然而,我下面的程序每次都给我相同的32个随机位。我是否可以让它在每次运行程序时生成不同的32位

    for(a=0;a<32;a++)
    {
        ran[a]= (rand()%2);
    }

对于(a=0;a您需要在每次运行程序时设置随机种子,以执行不同的操作。人们通常会这样做:

#include <time.h>       /* time */
...
srand (time(NULL));
... 
//Calls to rand();
#包括/*时间*/
...
srand(时间(空));
... 
//调用rand();

然后,您的随机种子在程序的每次启动时都是不同的。请检查有关srand的更多详细信息。

rand()是否已经是16个不同的随机位,您是否尝试将其扩展到16位?这比srand()快16倍。查找srand()的详细信息
srand(时间(NULL))
之前,循环将以秒为单位对伪随机数生成器进行种子设定。只要不在同一秒内运行程序两次,就会得到新的数字。在
之前调用
srand(time(NULL))
for
循环,即使种子设定正确,rand()低阶位非常糟糕,您的
%2
将丢弃除最低阶位以外的所有位。修复种子后,将
r%2
更改为
(r>>4)&1