[解決済み] Math.random()対 Random.nextInt(int)。
疑問点
とはどのような違いがあるのでしょうか?
Math.random() * n
と
Random.nextInt(n)
ここで
n
は整数ですか?
どのように解決するのですか?
ここで
の詳細な説明です。
の理由を説明します。
Random.nextInt(n)
がより効率的で偏りが少ないのは
Math.random() * n
Gili がリンクした Sun フォーラムのポストから引用しました。
Math.random()は内部でRandom.nextDouble()を使用しています。
Random.nextDouble() は Random.next() を2回使用して、仮数のビットがほぼ一様に分布する double を生成するので、0 から 1-(2^-53) までの範囲で一様に分布することになります。
Random.nextInt(n) は、平均して 2 回未満 Random.next() を使用します。それは 1 回使用し、得られた値が MAX_INT より下の n の最高倍数より上の場合は、再度試行し、それ以外は n のモジュロを返すので(これは MAX_INT 以下の n の最高倍数を超える値が分布を歪めることを防ぐ)0 から n-1 までの範囲で均一に分布する値が返されます。
6でスケーリングする前に、Math.random()の出力は、一様分布から引き出された2^53の可能な値のうちの1つです。
6 によるスケーリングでは、可能な値の数は変更されず、int 型にキャストすると、これらの値は 6 つの「バケット」 (0, 1, 2, 3, 4, 5) のいずれかに強制的に組み込まれ、各バケットは、可能な値の 1501199875790165 または 1501199875790166 (6 は 2^53 の外接ではないので) を網羅する範囲に対応します。これは、十分な数のサイコロを振った場合 (または十分に大きな面を持つダイス)、ダイスはより大きなバケットに偏っていることを示すことを意味します。
この効果が現れるまで、あなたは非常に長い時間サイコロを振って待つことになります。
Math.random()も約2倍の処理が必要で、同期の対象にもなります。
関連
-
Java のエラーです。未解決のコンパイル問題 解決方法
-
eclipse の実行時に java 仮想マシンが見つからなかった
-
[解決済み] この2回(1927年)を引き算すると、なぜおかしな結果になるのでしょうか?
-
[解決済み] JavaにおけるHashMapとHashtableの違いは何ですか?
-
[解決済み] Javaでメモリーリークを発生させるにはどうしたらいいですか?
-
[解決済み] JavaでStringをintに変換するにはどうしたらいいですか?
-
[解決済み] serialVersionUIDとは何ですか、またなぜそれを使用する必要がありますか?
-
[解決済み] 乱数(int)を生成する方法を教えてください。
-
[解決済み] Java内部クラスと静的ネストされたクラス
-
[解決済み] StringBuilderとStringBufferの違いについて
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
エラー java.util.NoSuchElementException
-
スタイルシートとして解釈されるリソースが、MIMEタイプtext/htmlで転送される。
-
エラーが報告されました。リソースの読み込みに失敗しました:サーバーは500(内部サーバーエラー)のステータスで応答しました。
-
this()の呼び出しはコンストラクタ本体の最初の文でなければならない 例外解決と原因分析
-
eclipseにプロジェクトをインポートした後、Editorにmain typeが含まれない問題
-
Eclipseプロンプトを実行する java仮想マシンを使用しない
-
サーブレットクラスのインスタンス化エラーの解決法
-
Java コンパイルエラー - スレッド "main" で例外 java.lang.Error: 未解決のコンパイル問題です。
-
JSPで「リストが型解決できない!」の解決方法
-
テストが見つかりませんでした