Я пытаюсь сделать небольшую программу о методе, в котором определяется сумма денег, присуждаемых игрокам в конце игры. До сих пор я использовал RNG для моделирования того, что происходит в раунде игры, но застрял. Я хочу узнать, как создать код, чтобы он мог сделать что-то другое во второй раз, когда тот же номер генерируется из RNG.
while (active==1)
{
random=rand()%11+1;
if (random==11)
{
bomb=1;
}
}
Спасибо за любые ответы :)
Храните карту пар (число, число):
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
}
}
Прежде всего, для ясности, примените следующее:
MAX
для любого максимального значения, которое вы хотите иметь (например, 11)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]
, чтобы выбрать, какое действие нужно предпринять.
rand
сам, и так уж сложилось, что он работает с C ++, как он мог бы сработать с C. Это довольно ясно и очевидно из контекста вопроса. Тем не менее, вы (не удивительно, как я уже видел это здесь ранее) выбираете «цепляться» за семантику языка, где у OP гораздо больше основных проблем (это также очевидно из рассматриваемого вопроса). Ух ты!!! Большие аплодисменты за вашу великую мудрость !!!