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