我剛剛開始使用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. 高概率數的隨機?
- 5. PHP隨機概率
- 6. 隨機概率PHP
- 7. 隨機概率錯誤
- 8. 隨機概率選擇
- 9. 隨機變量的概率
- 10. 以固定概率生成隨機數
- 11. 以概率獲得隨機數
- 12. 獲取隨機數基於概率
- 13. Python的numpy的隨機數的概率
- 14. 選擇隨機數的快速概率?
- 15. 以概率生成隨機數
- 16. 概率隨機數發生器
- 17. Java的高概率隨機數
- 18. 隨機數範圍的不同概率
- 19. 基於概率的隨機數
- 20. 隨機生成的數字遊戲與概率和循環
- 21. 根據概率隨機選擇項目
- 22. 不同概率的隨機行選擇
- 23. 帶概率的隨機圖生成
- 24. 隨機的值從枚舉的概率
- 25. python:概率的隨機樣本
- 26. 隨機算法概率最大化
- 27. 概率和機器學習
- 28. 根據概率分佈函數生成隨機數
- 29. 這個MATLAB代碼如何工作? (概率和隨機序列)
- 30. 隨機生成的概率遊戲循環和消除