Ошибка печати простой игры в кубики - PullRequest
0 голосов
/ 04 июля 2018

Итак, я новичок в C ++, я начал несколько дней назад. Я потратил много времени на изучение этого, может быть, больше, чем я должен был бы за несколько дней LOL. В любом случае, я принял некоторый код, который дважды бросил бы кубик и дал бы результат. Я решил изменить его так, чтобы, если бы результатом было простое число, вы бы «выиграли», а если нет, проиграли бы, и оно вернуло бы вас обратно через программу, и вы играли, пока не получили простое число.

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

Я не получаю фактическую ошибку при печати, все работает нормально, за исключением того, что я заметил, что он напечатает результат, а затем при повторном запуске он напечатает тот же результат, поэтому, если я нажму Enter один раз и получить 3, во второй раз я получу 3 снова, но если я в третий раз, я получу что-нибудь. Мне было интересно, если кто-нибудь взглянет на мой код и, возможно, поможет мне с решением?

screenshot

Стоит упомянуть, что мне кажется, что оно дает мне одно и то же число дважды, как в 75% случаев, но, похоже, оно часто является совпадением. Кроме того, это мой первый раз в стеке потока, и я не мог понять, как правильно использовать ввод кода, поэтому я просто добавил изображение.

Спасибо за любую помощь, которую я получаю, я могу добавить дополнительную информацию по запросу. Есть изменение, что у меня есть некоторые функции #include, которые мне не нужны, я не совсем уверен. Любые советы и рекомендации с благодарностью!

1 Ответ

0 голосов
/ 04 июля 2018

Не вызывайте srand в цикле.

srand() инициализирует генератор случайных чисел. Поскольку вы использовали time(NULL) в качестве параметра, он инициализирует генератор с тем же значением, пока текущая секунда не изменится. Таким образом, все вызовы random(), выполненные за одну и ту же секунду, возвращают один и тот же результат.

Когда тикают часы, генератор запускается снова и снова с тем же номером, обозначая новое состояние часов, и вы получаете новую серию равных результатов.

Просто позвоните srand() один раз, в начале вашего main().

EDIT
См. srand () - зачем называть его только один раз? .

...