乱数生成におけるボトルネック:それはあなたのPRNGではない

2025-08-04

この記事は、物語を通して、乱数生成アルゴリズムの最適化における重要な問題点を浮き彫りにしています。ボトルネックはPRNGそのものではなく、特定の範囲内の乱数を生成する方法にある可能性があるということです。著者は、古典的な剰余演算、浮動小数点乗算、整数乗算、そして棄却サンプリングやビットマスクなどいくつかのバイアスのない方法を含む、さまざまな範囲内の乱数を生成する方法を比較しています。実験結果は、最適な方法はPRNGとデータの規模によって異なることを示していますが、Lemireの整数乗算に基づく方法は、最適化後、非常に優れた性能を発揮し、性能を大幅に向上させました。この記事では、さまざまなPRNGのパフォーマンスも比較し、最も高速なPRNGであっても、範囲生成方法の最適化によるパフォーマンス向上には遠く及ばないことを発見しました。

開発