有没有办法让函数在第二次出现数字时做一些不同的事情?

时间:2014-09-16 14:22:43

标签: c++ random

我试图制作一个关于在游戏结束时奖励给玩家的金额的方法的小程序。到目前为止,我已经使用RNG来模拟一轮游戏中发生的事情但是已经卡住了。我想知道如何设计我的代码,以便在第二次从RNG生成相同的数字时做一些不同的事情。

while (active==1)
{
    random=rand()%11+1;
    if (random==11)
    {
        bomb=1;
    }
}

感谢您的回复:)

2 个答案:

答案 0 :(得分:0)

保留(数量,计数)对的地图:

std::unordered_map<int, std::size_t> number_frequencies;
while (active) {
    int number = random_number();
    ++number_frequencies[number];
    if (number_frequencies[number] == 2) {
        // do something
    } else {
        // do something else
    }
}

答案 1 :(得分:-2)

首先,为清楚起见,请应用以下内容:

  1. MAX定义为您想要的最大值(例如,11)
  2. random0之间使用MAX-1(而不是在1MAX之间
  3. 然后,您可以尝试根据您的要求调整以下代码:

    #define MAX 11
    ...
    int count[MAX] = {0};
    while (active == 1)
    {
        random = rand()%MAX;
        count[random]++;
        ...
    }
    

    count数组表示每个random值生成的次数。

    因此,在每次迭代时,您都可以使用count[random]来选择要采取的操作。