我正在做一个简单的(终端)老虎机项目,其中将在终端中输出3个水果名称,如果它们都相同,则玩家获胜。

我无法弄清楚如何确定玩家赢得回合的概率(例如大约40%的机会)。截至目前,我有:

     this->slotOne = rand() % 6 + 1;              // chooses rand number for designated slot
     this->oneFruit = spinTOfruit(this->slotOne); //converts rand number to fruit name

     this->slotTwo = rand() % 6 + 1;
     this->twoFruit = spinTOfruit(this->slotTwo);

     this->slotThree = rand() % 6 + 1;
     this->threeFruit = spinTOfruit(this->slotThree);

会根据数字选择一个“水果”,但是三个插槽中的每个插槽都有六分之一的机会(看到有6个水果)。由于每个角子机都有1/6的机会,因此总体上获胜的可能性非常低。

我将如何解决这个问题以创造更好的赔率(甚至更好的选择赔率,在需要时更改赔率)?

我考虑过将后两个旋转更改为较少的选项(例如,rand()%2),但这会使后两个插槽每次都选择相同的一对水果。

我的项目的链接:https://github.com/tristanzickovich/slotmachine

最佳答案

作弊。

如果玩家获胜,先决定首先

const bool winner = ( rand() % 100 ) < 40 // 40 % odds (roughly)

然后发明一种支持您决定的结果。
if ( winner )
{
   // Pick the one winning fruit.
   this->slotOne = this->slotTwo = this->slotThree = rand() % 6 + 1;
}
else
{
   // Pick a failing combo.
   do
   {
        this->slotOne = rand() % 6 + 1;
        this->slotTwo = rand() % 6 + 1;
        this->slotThree = rand() % 6 + 1;
   } while ( slotOne == slotTwo && slotTwo == slotThree );
}

现在,您可以像维加斯那样,以玩家的情绪来玩玩具。

关于c++ - 兰德函数,生成3个值的概率(对于简单老虎机)?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27953386/

10-09 13:42