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