我想打印1到6范围内的随机数。我有以下代码。
printf("The random value is %d \n",random(6));
每次运行代码时都会打印1804289383。即使在不同的机器上。我也试过rand(6)仍然输出相同。即使我删除了6,输出也没有改变。请建议如何解决它
先谢谢
SANKET
答案 0 :(得分:5)
srand()
之前应该rand()
每次都要生成新号码。此代码将显示如何:
# include <time.h>
# include <stdlib.h>
# inlcude <stdio.h>
int main()
{
srand(time(0));
printf("The random value is %d\n", 1 + rand() % 6);
return 0;
}
答案 1 :(得分:2)
首先,random()
不接受任何争论。
其次,来自fine manual:
与 rand()一样, random()默认情况下会产生一系列数字,这些数字可以通过调用 srandom()来复制1作为种子。
因此,除非您通过调用srandom()
明确指定种子,否则random()
每次都会产生相同的值序列。
第三,random()
返回long
,因此您应该在%ld
来电中使用printf()
。
第四,了解编译器的警告标志,将它们全部打开,并注意它们的输出。一旦理解为什么安全,就可以关闭一些警告标志。
答案 2 :(得分:1)
srand()函数将其参数设置为rand()返回的新的伪随机整数序列的种子。通过使用相同的种子值调用srand(),可以重复这些序列。
如果未提供种子值,则rand()函数将自动播种,值为1.
所以这是一个简单的例子:
#include <stdio.h>
#include <stdlib.h>
#define RSEED 2
int main (int argc, char *argv[]) {
srand(RSEED);
printf("The random value is %d\n", rand());
return 0;
}