2017-06-22 111 views
0

我剛剛開始使用C++,並且正在創建一個簡單的基於文本的冒險。我想弄清楚如何進行基於概率的事件。例如,當你打開盒子時,有50%的機會會有一把劍,並有50%的機會成爲一把刀。我知道如何製作一個隨機數字發生器,但我不知道如何將該數字與某些東西聯繫起來。我創建了我想要的變體,但它需要用戶輸入隨機數。我想知道如何根據if語句來判斷隨機數是大於還是小於50,而不是用戶輸入的數字是大於還是小於50.概率和隨機數

回答

-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中檢出一些隨機數生成器。