如何在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()
如果可用, random
或arc4rand
会更好。
#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(); }