能力值:
( LV3,RANK:30 )
|
-
-
2 楼
srand((unsigned)time(NULL)); 相当于把time作为种子产生了一个伪随机序列,只要调用一次,后面就可以一直调用rand()函数了。如果按照你这个写法,因为执行速度很快time基本没有变化,time返回的是秒数,所以产生结果应该都没变。
你可以尝试这样。
#include "stdio.h"
#include "time.h"
#include "stdlib.h"
#include <windows.h>
void cs(void)
{
int j;
srand((unsigned)time(NULL));
j = rand()%10;
printf("%d\n",j);
}
void main()
{
cs();
Sleep(1000);
cs();
Sleep(1000);
cs();
Sleep(1000);
cs();
getch();
}
或者是这样
#include "stdio.h"
#include "time.h"
#include "stdlib.h"
void cs(void)
{
int j;
j = rand()%10;
printf("%d\n",j);
}
void main()
{
srand((unsigned)time(NULL));
cs();
cs();
cs();
cs();
getch();
}
关于rand&srand有个总体的看法:srand初始化随机种子,rand产生随机数。随机种子只要一次就够了。因为rand的内部实现是用线性同余法做的,rand()会返回一随机数值,范围在0至RAND_MAX 间。在调用此函数产生随机数前,必须先利用srand()设好随机数种子,如果未设随机数种子,rand()在调用时会自动设随机数种子为1。
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
随机种子只要一次就够了。
一个线程中, 随机种子只要一次就够了。
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
懂了,谢谢,其实我直接在main函数中设置一次种子就好了
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
我的两个问题都帮我了,谢谢啦
|
|
|