关于c ++:在生成随机数方面什么是种子?

What is a seed in terms of generating a random number?

本问题已经有最佳答案,请猛点这里访问。

种子在生成随机数方面是什么?

我需要生成数百到数千个随机数,我已经阅读了很多关于使用"种子"的内容。什么是种子?随机数是从哪个种子开始的?例如,如果我将种子设置为5,它会生成从5到我的极限的数字吗?所以它永远不会给我3个例子。

我使用C++,所以如果你提供任何例子,如果它是C++的话,那就太好了。

谢谢!


在现实中,通常被称为随机数序列的是"伪随机"数序列,因为这些值是使用确定性算法计算的,概率不起实际作用。

"种子"是序列的起点,保证如果从同一个种子开始,您将得到相同的数字序列。这对于调试非常有用(当您在程序中查找错误时,您需要能够重现问题并研究它,因为每一次运行都会有所不同,所以不确定的程序很难调试)。

如果您只需要一个随机的数字序列,而不需要复制它,那么只需使用当前时间作为种子…例如:

1
srand(time(NULL));


那么,让我们这样说:

如果你和你的朋友将种子设定为相同的数字,那么你和你的朋友将得到相同的随机数。所以,如果我们都写这个简单的程序:

1
2
3
4
5
6
7
8
9
#include<iostream>
using namespace std;
void main () {
    srand(0);
    for (int i=0; i<3; i++){
        int x = rand()%11;          //range between 0 and 10
        cout<<x<<endl;
    }
}

我们都会得到相同的随机数,即(5,8,8)。

如果你每次想要得到不同的数字,你可以使用srand(time())