ホームページ >Java >&#&チュートリアル >「Math.random() または Random.nextInt(): どちらの Java メソッドがより優れたランダム整数生成を提供しますか?」
Math.random() と Random.nextInt(int): パフォーマンスと公平性の評価
Java では、Math 間の選択範囲内のランダムな整数を生成するための .random() と Random.nextInt(int) は、効率と問題を軽減するために重要です。 bias.
Math.random() は 0 と 1 の間の double を生成し、これを n で乗算して [0, n-1] の範囲の整数を取得します。対照的に、Random.nextInt(n) は、その範囲内のランダムな整数を直接返します。
本質的な違いは、内部メカニズムにあります。 Math.random() は内部的に Random.nextDouble() に依存しており、Random.next() を 2 回使用して一様分布の double を生成します。一方、Random.nextInt(n) は Random.next() を平均 2 回未満しか使用せず、[0, n-1] の範囲内で均一な分布を保証します。
さらに、スケーリング Math.random( ) by n は離散化につながり、結果が可能な値の範囲に対応する 6 つのバケットに強制的に入れられます。これにより、十分なロールがあるより大きなバケット、または範囲が大幅に大きい場合 (非常に大きなサイコロのロールなど) に偏りが生じる可能性があります。
パフォーマンスの点では、Random.nextInt(n) の方が効率的です。 Math.random() とは異なり、必要な処理が少なく、同期の対象になりません。
したがって、効率と公平性の両方を考慮して、 Random.nextInt(n) は、指定された範囲内でランダムな整数を生成する場合に推奨される選択肢です。
以上が「Math.random() または Random.nextInt(): どちらの Java メソッドがより優れたランダム整数生成を提供しますか?」の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。