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; }