我正在为蒙特卡罗模拟编写c ++代码.因此,我需要生成在[0,1]之间均匀分布的许多数字.我从这里收集了以下代码来生成我的数字:
// uniform_real_distribution
#include <iostream>
#include <random>
std::default_random_engine generator;
std::uniform_real_distribution<double> distribution(0.0,1.0);
int main()
{
double number = distribution(generator); //rnd number uniformly distributed between [0,1)
return 0;
}
Run Code Online (Sandbox Code Playgroud)
所以每次我需要一个新号码时,我都会打电话distribution(generator).我运行蒙特卡罗模拟以获得许多样本结果.结果应该正常分布在真实均值周围(未知).当我运行卡方拟合优度检验以检查它们是否正常分布时,我的样本结果有时无法通过测试.这里的关键词是"有时",所以这让我觉得我打了distribution(generator)太多次,最后我失去了生成数字的随机性.我在谈论每个模拟中生成的10 ^ 11个数字.
有可能吗?如果我distribution.reset()在调用之前重置分发怎么办?这会解决我的问题吗?
感谢您的任何建议.