C ++中的随机函数

时间:2015-10-14 15:39:27

标签: c++ random

我正在使用C ++进行分配,其中有一部分我需要在0到2之间生成一个随机数。我知道生成这个数字的代码是

    int randomNumber = rand() % 3;

当我在循环中运行它时,它总是生成随机数。然而,当我独立运行它时总是2.我运行一个程序30次,而不是循环,随机化不是随机的。例如

    int randomNumber = rand() % 3;
    int randomNumber1 = rand() % 3;
    int randomNumber2 = rand() % 3;
    int randomNumber3 = rand() % 3;
    int randomNumber4 = rand() % 3;
    int randomNumber5 = rand() % 3;
    cout << randomNumber << endl << randomNumber1 << endl << randomNumber2 << endl << randomNumber3 << endl << randomNumber4 << endl << randomNumber5 << endl;

这将始终输出2,2,1,1,2,1

为什么这不是随机的,我如何让它随机?

如果重要,我正在使用Visual Studio 2015。

2 个答案:

答案 0 :(得分:1)

伪随机数生成器不会生成真正的随机数,而是一系列看似随机的数字。您rand()的实现似乎使用伪随机生成器。你必须播种它以生成另一个序列。

请考虑使用std::random_device。大多数平台都支持非确定性随机源,因此大多数情况下你都会安全。

答案 1 :(得分:0)

添加

#include <ctime>

在代码的前面,在代码的开头(srand((unsigned int)time(NULL));之后)调用int main(){

这将使您的代码生成不同的序列,除非您在1秒内再次执行代码。