2017-06-22 109 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中检出一些随机数生成器。