我一直在試圖爲一個簡單的戰鬥模擬器編寫這個程序,我必須要做的一件事就是要求用戶在戰鬥中的低,中,高攻擊比例。在java中改變概率
因此,例如,用戶輸入低= 50%,中= 30%,高= 20%。現在我的問題來自於這裏。如何做到這一點,以便在一輪內節目打印時間低50%,中等30%,高20%。
我一直在試圖爲一個簡單的戰鬥模擬器編寫這個程序,我必須要做的一件事就是要求用戶在戰鬥中的低,中,高攻擊比例。在java中改變概率
因此,例如,用戶輸入低= 50%,中= 30%,高= 20%。現在我的問題來自於這裏。如何做到這一點,以便在一輪內節目打印時間低50%,中等30%,高20%。
沒有給你確切的Java代碼,這裏是你需要做什麼:
[0, 0.5>
,[0.5, 0.8>
; [0.8, 1.0>
。你可以從這裏弄明白嗎?
Afterthought:就你而言,用戶輸入的值合計達100%。一般來說,這可能不是真的;那麼你首先計算「明顯區間」,最後將它們縮放到最大值1.假設用戶輸入了50,30,30%(不能算他們的數學......)。你的時間間隔將
0, .5
.5, .8
.8, 1.1
而且你將不得不通過1.1
來劃分的一切得到正確的時間間隔。或者您可以將您的隨機數乘以1.1
。
我能想到的最簡單的就是創建您的要求相同比例(在這裏我創建了10串5個低點,3個媒介和2周的高點)
String[] probabilities = { "low", "low", "low", "low", "low", "medium", "medium", "medium", "high", "high };
然後用隨機數數組從陣列中挑選一個元素
Random random = new Random(); // might want to give it a seed here
int randomIndex = random.nextInt(probabilities.length);
String probability = probabilities[randomIndex];
對於大量採樣,這應該會給你想要的分佈。
不錯的和簡單的解決方案 – Leo
你必須發佈一些示例代碼給任何人來幫助你。 –