有名な講演「rand() は有害であると考えられています」では、エンジン ディストリビューションを使用しています。乱数生成のパラダイムは、古典的な std::rand() とモジュラスの単純化よりも提唱されています。
主張をテストするために、std::rand() と std::mt19937 と std:: を比較する実験を行ってください。 uniform_int_distribution が実施されました:
驚くべきことに、ロールの合計スプレッドは両方の方法で同等であり、std::mt19937 と std::uniform_int_distribution では追加の均一性が得られなかったことを示唆しています。ただし、新しい方法はおよそ 4 倍遅かったです。
この実験は std::rand() が必ずしも劣っているわけではないことを示しているように見えましたが、std::rand() に固有の制限を考慮することが重要です。
対照的に、新しい
パフォーマンスの観点から、std::minstd_randがstdの適切な代替となる可能性があることが示唆されています。 ::mt19937 LCG 品質が十分な場合、速度が向上する可能性があります (特に、uniform_int_distribution を使用した分散調整を回避する場合)。
最終的に、乱数ジェネレーターの選択はアプリケーションの特定の要件によって決まりますが、新しいこのライブラリには、特に高品質の乱数を必要とするアプリケーションに対して、従来の std::rand() 実装に比べていくつかの利点があります。
以上が新しいランダム ライブラリは本当に「std::rand()」よりも優れているのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。