C++ 随机引擎并不是真正的随机
c++ random engines not really 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 的,看起来更像是正态分布,无论我使用什么引擎。有什么我没理解正确的地方吗?谢谢纪尧姆
注意到我的值大致相同
这正是您对统一随机数生成器所期望的。范围 [10^(n-1),10^n) 中的整数是范围 [0,10^(n-1)) 中的 9 倍。
相关文章:
- 如何生成一个随机的 n 位数,其中 n 是任意的
- 当我尝试使用它时,Scanf 会抛出一个随机异常(scanf_s 也是如此)
- 如何创建没有特定定义的随机分布?uniform_int_distribution是从其他类继承的吗?
- 读取大文件(>2GB)(文本文件包含以太网数据)并通过不同参数随机访问数据的最佳方法是什么?
- 对于C++随机访问迭代器(矢量迭代器),迭代器之间的差异是如何计算的?
- boost beast Websocket Multi Request Server/Client 并不是真正的 mul
- 为什么变量的打印地址在每次执行时都会打印随机值,即使它是 C 中的逻辑地址?
- 虽然我添加了boost库,但Eclipse并不是用C++构建的.为什么
- 将对象传递给函数并不是导致构造函数调用
- random_shuffle并不是真的随机
- 从catch块调用异常类中的函数并不是打印从try块传递的值
- 哪些窗口事件会影响 MDIGetActive()?导致OnMDIActivate()的事件并不是唯一的事件
- 一个C++11随机分布是由什么组成的
- 为什么c++11随机分布是可变的
- 并不是每次都调用CPrintDialog::OnInitDialog
- 阶乘并不是对所有值都有效
- 静止的并不是一成不变的
- C++ 随机引擎并不是真正的随机
- 在c++中使用均匀实分布生成的随机数并不是真正均匀分布的
- 以编程方式确保随机调色板是充满活力的,与背景不同