我正在玩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,看起来更像是正态分布,无论我使用什么引擎。 有没有我没有正确理解的东西? 谢谢, 纪尧姆
答案 0 :(得分:14)
注意到我的价值大致是相同的顺序
这正是您对均匀随机数生成器的期望。 [10 ^(n-1),10 ^ n)范围内的整数数量是[0,10 ^(n-1))范围内的9倍。