さまざまなアルゴリズムを保持する RNG クラスを作成しましたが、期待どおりに動作しません。(一様ではなく) 通常の分布を使用したいという事実に加えて、私のコードは常に同じ数値 (最大) または間隔 [最小、最大] から 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
は、境界に入ることができませんでした!
編集: 正規分布について話すとき、2 つの境界付近の RNG の結果は、両方の平均ほど頻繁に生成されるべきではないことを意味します。たとえば、標準ガウス分布のグラフ表示を見てください。理解できれば、この方法で実装/使用したい結果の値の確率を視覚化するため、参照しています。