0
A
回答
1
此方法適用於所有語言。只需要一個大的隨機數,然後取一個數字的mod,然後檢查範圍。
Random rand = new Random();
int r = rand.nextInt(10000000);
int m = r % 10;
if (m < 1) return 1; // 10 %
else if (m < 4) return 2; // 30 %
else return 3; // 60 %
0
我不覺得孤單對於一個方法,你只需要執行類似如下
解決方法1-10包容性產生一個隨機數,然後選擇1,2或3取決於隨機機會的概率。
if (random_number == 1)
{
result = 1;
}
else if (random_number <= 4)
{
result = 2;
}
else
{
result = 3;
}
+0
有一種方法。 'nextDouble'將返回一個介於0和1.0之間的均勻分佈的數字。然後您可以使用它進行選擇。 – ChiefTwoPencils
3
首先生成一個在0.0到1.0之間均勻分佈的double。然後分裂的範圍內(0.0 < X < 1.0)轉換成對應於您的期望概率的子範圍:
- 0.0 < = X < 0.1變爲1(間隔寬度爲(0.1 - 0.0)= 0.1,或10%)的;
- 0.1 < = x < 0.4變爲2(間隔寬度爲(0.4-0.1)= 0.3或30%);
- 0.4 < = x < 1.0變爲3(間隔寬度爲(1.0-0.4)= 0.6或60%)。
在代碼:(其中rng
是java.util.Random
一個實例)
double rand = rng.nextDouble();
if (rand < .1) {
return 1;
} else if (rand < .1 + .3) {
return 2;
} else {
return 3;
}
該方法可以很容易地推廣到目標概率的任意集合。
0
試試這個。
static final int[] RATES = { 1, 2, 2, 2, 3, 3, 3, 3, 3, 3 };
和 「基於概率的隨機數」 ** ---
Random random = new Random();
int result = RATES[random.nextInt(RATES.length)];
相關問題
- 1. 如何根據概率在java中生成隨機字母?
- 2. 如何根據給定的概率生成隨機事件?
- 3. 根據概率分佈函數生成隨機數
- 4. Python numpy根據概率生成隨機二進制值數組
- 5. 以固定概率生成隨機數
- 6. 以概率生成隨機數
- 7. 帶概率的隨機圖生成
- 8. 如何將概率添加到隨機數生成器中
- 9. 根據概率隨機選擇項目
- 10. 概率隨機數?
- 11. Python - 如何用逐位概率生成隨機數?
- 12. 基於概率隨機生成子集數據
- 13. Java的高概率隨機數
- 14. 在matlab中隨機生成概率的數字
- 15. 概率隨機數發生器
- 16. 隨機數字的概率
- 17. 高概率數的隨機?
- 18. 在Python,根據轉變概率生成用於TSP隨機路徑
- 19. 根據概率選擇獲勝者的隨機數
- 20. c#概率和隨機數
- 21. 概率和隨機數
- 22. 隨機生成的數字遊戲與概率和循環
- 23. 生成具有不同概率的隨機數
- 24. 生成給定概率的隨機整數
- 25. 用概率分佈生成範圍內的隨機整數
- 26. 生成具有一定概率的隨機數
- 27. 生成隨機數與給定的概率
- 28. 如何在java中生成隨機數
- 29. PHP隨機概率
- 30. 隨機概率PHP
**這不就是隨機數是無論如何(沒有得到太多的技術)? – byxor
您可以生成一個1到100之間的隨機數。然後如果結果是1-10,則返回1,如果結果在10-40之間返回2,並且結果大於40,則返回3. – bhspencer
使用數組' {1,2,2,3,3,3,3,3}'或者一個列表,洗牌並選擇一個 –