Есть ли способ заставить функцию делать что-то другое во второй раз, когда появляется число?

0

Я пытаюсь сделать небольшую программу о методе, в котором определяется сумма денег, присуждаемых игрокам в конце игры. До сих пор я использовал RNG для моделирования того, что происходит в раунде игры, но застрял. Я хочу узнать, как создать код, чтобы он мог сделать что-то другое во второй раз, когда тот же номер генерируется из RNG.

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

Спасибо за любые ответы :)

  • 1
    сохранить список предыдущих номеров и проверять весь список каждый раз.
  • 0
    Сохраните коллекцию сгенерированных номеров и проверьте, существует ли новый номер в коллекции.
Показать ещё 5 комментариев
Теги:
random

2 ответа

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
    }
}
-3

Прежде всего, для ясности, примените следующее:

  1. Определите MAX для любого максимального значения, которое вы хотите иметь (например, 11)
  2. Используйте random от 0 до MAX-1 (вместо 1 и MAX)

Затем вы можете попробовать настроить следующий фрагмент кода в соответствии с вашими требованиями:

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

Массив count указывает количество раз, которое генерировало каждое random значение.

Поэтому на каждой итерации вы можете использовать count[random], чтобы выбрать, какое действие нужно предпринять.

  • 4
    -1 для использования препроцессора и rand (). Вы ужасный программист C ++. Не делай этого снова.
  • 0
    @Puppy: Вы ужасно знаете, как читать между строк и понимать проблему под рукой. Проблема ОП не зависит от языка . Очевидно, он (или она) использует rand сам, и так уж сложилось, что он работает с C ++, как он мог бы сработать с C. Это довольно ясно и очевидно из контекста вопроса. Тем не менее, вы (не удивительно, как я уже видел это здесь ранее) выбираете «цепляться» за семантику языка, где у OP гораздо больше основных проблем (это также очевидно из рассматриваемого вопроса). Ух ты!!! Большие аплодисменты за вашу великую мудрость !!!
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню