我编写了一个包含不同算法的 RNG 类,但是它没有按预期工作。除了我想使用正常(而不是统一)分布的事实之外,我的代码总是返回相同的数字(最大值)或仅返回区间 [min,max] 中的 2 个数字:
std::function<int(int, int)> mt19937 =
[](int min, int max) -> int {
std::uniform_int_distribution<int> distribution(min, max);
std::mt19937 engine;
engine.seed(time(null));
auto generator = std::bind(distribution, engine);
return generator();
};
谁能解释一下解决这个难题缺少什么?此外,我如何实现正态分布?上次我尝试时,std::normal_distribution
我无法进入界限!
编辑:当我谈到正态分布时,我的意思是靠近两个边界的 RNG 的结果不应该像两者的平均值那样频繁地生成。例如,查看标准高斯分布的图形表示。我指的是它,因为它可视化了我想以这种方式实现/使用的结果值的概率,如果你理解的话。