This question already has answers here:
random or rand function prints the same value, even in different machines
(3个答案)
3年前关闭。
我正在尝试编写一个可以显示从1到36的随机数的c程序。上面的程序仅显示一次从1到36的随机数。当我第二次运行程序时,随机数保持不变。每次运行该程序时,缺少一些随机数字吗?
(3个答案)
3年前关闭。
#include <stdio.h>
#include <stdlib.h>
int main()
{
int a = rand()% 36;
int b = rand() % 36;
int c = rand() % 36;
int d = rand() % 36;
printf("1 = %d\n" , a);
printf("2 = %d\n" , b);
printf("3 = %d\n" , c);
printf("4 = %d\n" , d);
return 0;
}
我正在尝试编写一个可以显示从1到36的随机数的c程序。上面的程序仅显示一次从1到36的随机数。当我第二次运行程序时,随机数保持不变。每次运行该程序时,缺少一些随机数字吗?
最佳答案
您需要使用srand()
为随机数生成器添加种子。否则,假定1
为种子。srand()
手册页:
如果未提供种子值,则rand()函数将自动
种子的值为1。
这意味着每次运行程序时,都会使用相同的种子(1),并且您将始终获得相同的数字序列。
通常,srand((unsigned int)time(NULL));
用于播种。但是如果您足够快地运行程序(即time(NULL)
返回相同的值),那么即使这样做,您也可能会得到相同的数字序列。
关于c - C中带有rand的随机数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41784131/
10-16 15:00