我剛剛開始使用C++,並且正在創建一個簡單的基於文本的冒險。我想弄清楚如何進行基於概率的事件。例如,當你打開盒子時,有50%的機會會有一把劍,並有50%的機會成爲一把刀。我知道如何製作一個隨機數字發生器,但我不知道如何將該數字與某些東西聯繫起來。我創建了我想要的變體,但它需要用戶輸入隨機數。我想知道如何根據if語句來判斷隨機數是大於還是小於50,而不是用戶輸入的數字是大於還是小於50.概率和隨機數
Q
概率和隨機數
0
A
回答
-1
如果使用rand()
它會生成數字範圍0..RAND_MAX
。因此,對於50%的可能性,你可以這樣做:
#include <stdlib.h>
if (rand() < RAND_MAX/2)
{
// sword - 50% probability
}
else
{
// knife - 50% probability
}
你可以很明顯這延伸到兩個以上不同的情況對每個情況下,任何給定的概率,只需在範圍0..RAND_MAX
定義每種情況下適當的閾值,例如
int r = rand();
if (r < RAND_MAX/4)
{
// sword - 25% probability
}
else if (r < 3 * RAND_MAX/4)
{
// knife - 50% probability
}
else
{
// axe - 25% probability
}
2
使用剩餘的運算符%和rand。 蘭特()%2可以給你0或1. 讓0成爲一把劍,1成爲一把刀。
如果你還需要一個斧頭,然後使用rand()%3。 它可以給你0,1或2.
2代表一個斧頭,0和1像上面一樣。 ifs和elses是顯而易見的。
rand()%n其中n是一個大數字的概率越高,給你的數字越小。概率不均勻分佈。你可以從stl或boost中檢出一些隨機數生成器。
相關問題
- 1. c#概率和隨機數
- 2. 概率隨機數?
- 3. 隨機數字的概率
- 4. PHP隨機概率
- 5. 隨機概率PHP
- 6. 隨機概率錯誤
- 7. 隨機數範圍的不同概率
- 8. 以概率生成隨機數
- 9. Python的numpy的隨機數的概率
- 10. 概率隨機數發生器
- 11. Java的高概率隨機數
- 12. 選擇隨機數的快速概率?
- 13. 獲取隨機數基於概率
- 14. 隨機的值從枚舉的概率
- 15. 隨機算法概率最大化
- 16. 帶概率的隨機圖生成
- 17. 不同概率的隨機行選擇
- 18. python:概率的隨機樣本
- 19. 根據概率分佈函數生成隨機數
- 20. 隨機生成的概率遊戲循環和消除
- 21. 生成具有一定概率的隨機數
- 22. 兩個隨機浮點數相同的概率是多少?
- 23. 如何將概率添加到隨機數生成器中
- 24. 確定隨機變量的概率質量函數
- 25. 生成給定概率的隨機整數
- 26. C++,給定概率如何隨機選擇數字
- 27. 用概率分佈生成範圍內的隨機整數
- 28. 給定概率與numpy隨機位數組
- 29. Android - 以某種概率選擇五個隨機數
- 30. 根據概率選擇獲勝者的隨機數