c 获取随机数c 随机或rand函数打印相同的值,即使在不同的机器上




获取随机数c++ (3)

我想打印1到6范围内的随机数。我有以下代码。

printf("The random value is %d \n",random(6));

每次运行代码时都会打印1804289383。 即使在不同的机器上。 我也试过兰特(6)仍然输出是一样的。 即使我删除了6,输出不会改变。 请建议如何解决它

提前致谢

SANKET


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

你应该在rand() srand()之前有srand()来每次生成新的数字。 此代码将显示如何做到这一点:

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

首先, random()不带任何参数。

其次,从精细手册

rand()一样, random()默认会产生一个数字序列,可以通过调用srandom()作为种子来复制。

因此,除非通过调用srandom()明确指定种子,否则random()每次都会产生相同的值序列。

第三, random()返回一个long所以你应该在你的printf()调用中使用%ld

第四,了解你的编译器的警告标志,把它们全部打开,注意它们的输出。 一旦你明白为什么这样做是安全的,你可以关闭一些警告标志。





random