这是我第一次使用C尝试随机数(我想念C#)。这是我的代码:
int i, j = 0;
for(i = 0; i <= 10; i++) {
j = rand();
printf("j = %d\n", j);
}
有了这段代码,我每次运行代码都会得到相同的顺序。但是如果我在
srand(/*somevalue/*)
循环之前添加for
,它会生成不同的随机序列。谁能解释为什么? 最佳答案
您必须播种。随时间播种是个好主意:
srand()
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main ()
{
srand ( time(NULL) );
printf ("Random Number: %d\n", rand() %100);
return 0;
}
您得到相同的序列,因为如果不调用
rand()
,srand()
会自动以1的值作为种子。编辑
由于评论
rand()
将返回0到RAND_MAX
(在标准库中定义)之间的数字。使用modulo运算符(%
)可得出rand() / 100
除法的其余部分。这将强制随机数在0-99范围内。例如,要获取0-999范围内的随机数,我们将应用rand() % 1000
。关于c - 为什么我总是用rand()获得相同的随机数序列?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1108780/