c ++随机引擎不是真正随机的

时间:2016-07-05 14:13:27

标签: c++ c++11 random

我正在玩c ++随机引擎,有些事让我心烦意乱。 注意到我的值大致相同,我做了以下测试:

#include <random>
#include <functional>
#include <iostream>

int main()
{
    auto res = std::random_device()();
    std::ranlux24 generator(res);
    std::uniform_int_distribution<uint32_t> distribution;
    auto roll = std::bind(distribution, generator);


    for(int j = 0; j < 30; ++j)
    { 
        double ssum = 0;
        for(int i = 0; i< 300; ++i)
        {
            ssum += std::log10(roll());
        }
        std::cout << ssum / 300. << std::endl;
    }
    return 0;
}

我打印的值大约是9.2,看起来更像是正态分布,无论我使用什么引擎。 有没有我没有正确理解的东西? 谢谢, 纪尧姆

1 个答案:

答案 0 :(得分:14)

  

注意到我的价值大致是相同的顺序

这正是您对均匀随机数生成器的期望。 [10 ^(n-1),10 ^ n)范围内的整数数量是[0,10 ^(n-1))范围内的9倍。