如何在time.h中使用函数srand()?

我的程序包含的代码每次执行时都应生成一个随机的正整数。 它只生成一次随机数。 在那之后,当我执行相同的代码时,它给了我相同的值,并且它使我的代码无用。

我开始使用rand函数,然后我将srand()函数与time.h头文件一起使用,但它仍然无法正常工作。

#define size 10 for(i=0;i<size;i++) Arr[i] = rand()%size; 

第一次通话(随机):

 6 0 2 0 6 7 5 5 8 6 

第二次通话(随机但与之前相同):

 6 0 2 0 6 7 5 5 8 6 

后来我访问了Stack Overflow问题,我读到了srand()函数,我用它作为:

 #include for(i=0;i<size;i++) Arr[i] = srand(time(NULL)); 

第一个电话:

 -10327 -10327 -10327 -10327 -10327 -10327 -10327 -10327 -10327 -10327 

第二个电话:

 -10326 -10326 -10326 -10326 -10326 -10326 -10326 -10326 -10326 -10326 

它给了我不同的(但不是随机的值)。 我已经将Arr [i]定义为unsigned int ,但我仍然得到负值。

你需要调用srand() 一次 ,随机化种子,然后在你的循环中调用rand()

 #include  #include  #define size 10 srand(time(NULL)); // randomize seed for(i=0;i 

尝试在rand()之前调用randomize()来初始化随机生成器。

(看看: srand() – 为什么只调用一次? )

如果你选择了srand ,那么在你使用它之前至少调用一次rand()是个好主意,因为它是一种可怕的原始伪随机生成器。 请参阅Stack Overflow问题为什么rand()%7总是返回0?

 srand(time(NULL)); rand(); //Now use rand() 

如果可用, randomarc4rand会更好。

 #include"stdio.h" #include"conio.h" #include"time.h" void main() { time_t t; int i; srand(time(&t)); for(i=1;i<=10;i++) printf("%c\t",rand()%10); getch(); } 
 #include"stdio.h"//rmv coding for randam number access #include"conio.h" #include"time.h" void main() { time_t t; int rmvivek; srand(time(&t)); rmvivek=1; while(rmvivek<=5) { printf("%c\t",rand()%10); rmvivek++; } getch(); }