私は好奇心が強いです、Javaで確率をどのように実装するのですか?たとえば、変数の表示の確率が1/25の場合、どのように実装するのですか?または他の確率?一般的な方向で私を指摘してください。Javaでの確率
Javaでの確率
答えて
乱数を生成するにはRandomを使用し、達成しようとしている確率と一致するリテラルに対してテストします。
だから、与えられた:
boolean val = new Random().nextInt(25)==0;
val
(nextInt()
は0で、最大に始まる任意の数を返すも、確率を持っていますが、含めないことから、25)、真であることの1/25の確率を持っています
もちろん、import java.util.Random;
にする必要があります。
としては、あなたがそれをすべての時間作り直すのではなく、ランダムなオブジェクトを再利用する方が効率的だろうつ以上の乱数を取得している場合、下記の指摘..
Random rand = new Random();
boolean val = rand.nextInt(25)==0;
を
boolean val2 = rand.nextInt(25)==0;
偉大な論理!ありがとうございました! –
+1:新しいRandom()をフィールドまたは変数に配置し、それを再利用すると効率が向上します。 –
@PeterLawreyあなたはもちろん正しいです、私は適切に答えを編集しました。私はちょうど1行の例としてそれを置く! – berry120
通常、乱数ジェネレータを使用します。それらのほとんどは[0,1]の間隔で数字を返します。その数字が< = 0.04であるかどうかをチェックします。
if(new Random().nextDouble() <= 0.04) { //you might want to cache the Random instance
//we hit the 1/25 (4%) case.
}
それとも
if(Math.random() <= 0.04) {
//we hit the 1/25 (4%) case.
}
注意が異なる特性を持つ複数の乱数発生器がありますが、単純なアプリケーションのためにRandom
クラスが十分でなければならないこと。
一般的なケースでは、rand.nextDouble()を使用するこの解は、与えられた整数xに対して1/xにではなく任意の確率に適用できるので、受け入れられた解より優れています。 たとえば、ターゲット確率が33.5%の場合、rand.nextInt()を使用する単純でクリーンなソリューションはありません。 – shiri
@shiriの可能性があります。整数を使用すると、0から1000までの整数を作成し、値が335未満であることを確認できます。 – Thomas
が合意しました。私が確率を考えるとき、私は[0,1]の範囲の数値で考える傾向があるので、私はnextDouble()<= Xがよりきれいであることがわかります。 – shiri
Javaには、乱数を生成するjava.util.Random
というクラスがあります。あなたは確率1/25で発生するために何かをしたい場合は、単に1および25(または0と24を含む)の間の乱数を生成し、その数は1
if(new java.util.Random().nextInt(25)==0){
//Do something.
}
たぶん、あなたはこれを実装することができますに等しいかどうかを確認してください乱数を生成します。
Random rn = new Random();
double d = rn.nextDouble(); // random value in range 0.0 - 1.0
if(d<=0.04){
doSomeThing();
}
は1.7以降では、(少なくとも同時環境で)使用することをお勧めします:現在のスレッドに分離
ThreadLocalRandom.current().nextInt(25) == 0
乱数ジェネレータ。 Mathクラスで使用されるグローバルRandomジェネレータと同様に、ThreadLocalRandomは内部的に生成されたシードで初期化されます。適用可能な場合、並行プログラムで共有RandomオブジェクトではなくThreadLocalRandomを使用すると、オーバーヘッドと競合が大幅に減ります。 ThreadLocalRandomの使用は、複数のタスク(各ForkJoinTaskなど)がスレッドプール内で並列に乱数を使用する場合に特に適しています。 このクラスの使用法は通常、ThreadLocalRandom.current()。nextX(...)(XはInt、Longなど)の形式にする必要があります。すべての用途がこの形式である場合、複数のスレッド間で偶発的にThreadLocalRandomを共有することは決してできません。
このクラスは、一般的に使用される追加の有界ランダム生成方法も提供します。
- 1. 確率
- 2. Python - モデリングの確率
- 3. 確率のクラス図
- 4. 確率表記
- 5. 分割確率
- 6. 確率を設定して別の確率を生成する
- 7. 描画のためのJavaグラフライブラリ確率ツリーダイアグラム
- 8. JavaのPreparedStatementとパラメータを設定する確率
- 9. 確率的乱数?
- 10. python加法確率
- 11. アルゴリズム/確率練習
- 12. R - 日付差の確率
- 13. Java - 同じ確率を持つ数字を描画する
- 14. Pythonでの確率的計算ライブラリ
- 15. Javaループ効率
- 16. Javaで0と1の行列を生成し、確率を選択します。
- 17. OPencv SVM予測確率
- 18. プロットジョイント確率密度関数
- 19. c#確率と乱数
- 20. 確率分布から確率分布関数を作成する
- 21. 勝利の確率PHPのパーセント計算
- 22. コンポーネントの明確化とアニメーションメソッドの効率
- 23. 初心者のための確率アルゴリズム
- 24. 遷移確率文の行列計算
- 25. 実行時分析の確率は?
- 26. 確率がHTML/Javascriptのランダム画像
- 27. パスに従う確率のアルゴリズム
- 28. データの確率密度を得る
- 29. C++ - 重要値の確率分布
- 30. 確率的なkNNとナイーブベイズの違い
チェックアウトJavaランダムクラス。それはあなたが乱数を生成することができ、そこから行くことができます... –