我很好奇,要如何在Java中實現概率?例如,如果變量顯示的機會是1/25,那麼我將如何實現?或者其他任何可能性?請向我指出大方向。Java中的概率
Java中的概率
回答
你會使用Random來產生一個隨機數,然後根據文字測試它來匹配你試圖達到的概率。
所以給出:
boolean val = new Random().nextInt(25)==0;
val
將有被真正的1/25的概率(因爲nextInt()
有返回任意數量從0開始爲止,但不包括的概率甚至,25)
您當然也必須import java.util.Random;
。
正如指出的下方,如果你得到一個以上的隨機數它會是更有效的重用隨機對象,而不是重新創建它所有的時間:
Random rand = new Random();
boolean val = rand.nextInt(25)==0;
..
boolean val2 = rand.nextInt(25)==0;
偉大的邏輯!謝謝! –
+1:將'new 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
類應該是足夠了。
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類使用的全局隨機生成器類似,ThreadLocalRandom使用內部生成的種子進行初始化,否則可能不會進行修改。如果適用,在併發程序中使用ThreadLocalRandom而不是共享Random對象通常會遇到更少的開銷和爭用。當多個任務(例如,每個ForkJoinTask)在線程池中並行使用隨機數時,使用ThreadLocalRandom尤其合適。 這個類的用法通常應該是這樣的形式:ThreadLocalRandom.current()。nextX(...)(其中X是Int,Long等)。當所有用法都是這種形式時,不可能在多個線程中意外共享一個ThreadLocalRandom。
該類還提供了其他常用的有界隨機生成方法。
- 1. 概率計數中的Java輸出
- 2. Android java數學概率
- 3. Python中,概率
- 4. 非線性概率的線性概率
- 5. WEKA + Java的:獲得類的概率
- 6. 概率和頻率
- 7. 的Java編程實踐概率
- 8. Java的高概率隨機數
- 9. 在加權概率圖中存在路徑的概率
- 10. Excel中失敗的概率
- 11. Matlab中的概率組合
- 12. Python中的概率計數
- 13. Python中的依賴概率
- 14. Scala中的概率編程
- 15. 概率的計算
- 16. Java模擬退火驗收概率
- 17. 概率懷疑
- 18. 概率算法
- 19. 概率函數 -
- 20. 概率組合
- 21. 概率模型
- 22. 概率優化
- 23. 基於概率
- 24. 數學概率
- 25. 查找概率
- 26. 概率計算
- 27. 在C++中表示概率
- 28. 在GAMS中定義概率
- 29. 減少0-1揹包概率。到SAT的概率
- 30. pymc python變化點檢測的小概率。零概率錯誤
檢出java隨機類。這可以讓你產生隨機數,你可以從那裏去... –