我一直在尋找,並找到類似的話題,但無法理解他們或解決如何應用他們。稱重號碼發生器
簡單:我要的是生成1
和100
之間的數字:
- 號
1
到30
應該有60%的概率。 - 數字
31
到60
應該有35%的概率。 - 數字
61
至100
應該有5%的概率。
我一直在尋找,並找到類似的話題,但無法理解他們或解決如何應用他們。稱重號碼發生器
簡單:我要的是生成1
和100
之間的數字:
1
到30
應該有60%的概率。31
到60
應該有35%的概率。61
至100
應該有5%的概率。對我來說最簡單的方法是生成四個隨機數。第一個數字是1-100。第二個數字是1-30,第三個數字是31-60,第四個數字是61-100。把第一個隨機看作是一個百分比。如果它是1-60,則繼續運行第二個隨機數,如果它是60-95運行第三個隨機數,並且如果它是95-100運行第四個隨機數。還有其他方法可以縮短,但在我看來,這是最容易理解的。
用此創建隨機數字1-100:(int)(Math.random()*100)+1
其餘應該只是條件。
獲取數字在你的範圍
首先產生在3個時間間隔3張的隨機數。
1:1-30
2:31-60
3:61-100
生成概率數
接着,產生一個號1-100。如果數字是1-60,則選擇第一步中的第一個隨機數,如果是61-95,則選擇第二個選項,如果是96-100,則選擇第三個。
這聽起來像一個家庭作業的問題,所以我不會提供代碼,但這裏是一個簡單的算法的描述:
生成介於1和100讓我們稱之爲X,X將使用一個隨機數以確定如何生成最終結果:
如果X在1和60之間,則生成1到30之間的隨機數,作爲最終結果。
如果X在61到95之間,則生成一個31到60之間的隨機數作爲最終結果。
如果X在96和100之間,生成61到100之間的隨機數是您的最終結果。
你可以看到,這需要兩個隨機數生成每個加權數字,你想要的。它實際上可以簡化爲一個隨機數字生成,而這只是一個練習。
僅供參考,如何生成一個範圍內的隨機數這裏找到:How do I generate random integers within a specific range in Java?
它實際上不是一個家庭作業問題,只是一個項目即時通訊工作從某人我知道如何在一個範圍內生成整數,我只是想檢查它們是否是一個更簡單的方法來做到這一點非常感謝 – djohn316
什麼是你用來生成的數字代碼? – Envil
[生成加權隨機數]可能的重複(http://stackoverflow.com/questions/8435183/generate-a-weighted-random-number) – 2015-06-28 01:55:36