28

就生成随机数而言,种子是什么?

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

我正在使用 C++,所以如果你提供任何示例,如果它是在 C++ 中会很好。

谢谢!

4

2 回答 2

36

实际上通常称为随机数序列的是“伪随机”数序列,因为这些值是使用确定性算法计算的,并且概率没有实际作用。

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

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

srand(time(NULL));
于 2013-02-16T20:12:35.117 回答
4

所以,让我们这样说:

如果您和您的朋友将种子设置为相同的数字,那么您和您的朋友将获得相同的随机数。所以,如果我们所有人都编写这个简单的程序:

#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())

于 2016-04-11T12:17:12.773 回答