Функция srand возвращает те же значения

Эй, ребята, взгляните на эту программу.

/* The craps game, KN king page 218 */ #include  #include  #include  #include  int roll_dice(void); bool play_game(void); int roll_dice(void) { int roll; getchar(); srand((unsigned) time(NULL)); roll = rand() % 13; if(roll == 0) roll = roll + 1; return roll; } bool play_game() { int sum = 0, wins = 0, loss = 0, point; sum = roll_dice(); printf("You rolled: %d", sum); if(sum == 7 || sum == 11) { printf("\nYou won!\n"); return true; } if(sum == 2 || sum == 3 || sum == 12) { printf("\nYou lost!!"); return false; } point = sum; printf("\n\nYour point is: %d", point); do { sum = roll_dice(); printf("\nYou rolled: %d", sum); }while(sum != point); if(sum == point) { printf("\nYou won!!!"); return true; } } int main() { char c, wins = 0, losses = 0; bool check; do { check = play_game(); if(check == true) wins++; else if(check == false) losses++; printf("\nPlay Again? "); scanf("%c", &c); }while(c == 'Y' || c == 'y'); printf("\nWins: %d Losses: %d", wins, losses); return 0; } 

Функция srand продолжает возвращаться, то же значение 3 или 4 раза, y это?

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

srand () – это функция, которая устанавливает семя для функции rand (). То, что вы здесь делаете, – это установить семя на текущее время перед каждым вызовом rand (), который, если он называется достаточно быстро, получит одно и то же значение (поскольку он сбрасывается на одно и то же семя, которое, если достаточно быстро, будет то же значение времени).

То, что вы хотите сделать, это вызвать srand () один раз, когда программа запускается (в начале вашей функции main ())

Затем вызовите rand () каждый раз, когда вы хотите случайное число, например, вы делаете в настоящее время, но без вызова srand () каждый раз.

Interesting Posts

Использование MySQL с платформой Entity Framework

Назначение объектов в VB6

Добавить элемент в элемент управления Listview

Самый быстрый способ найти количество строк в тексте (C ++)

Поиск контроля в элементе управления WPF

Код командной строки для подключения программы к панели задач Windows 10?

Redis в 10 раз больше использования памяти, чем данные

В чем разница между CSS-classами .foo.bar (без пробелов) и .foo .bar (с пробелом)

В чем разница между «и» в Prolog?

Java 8 U40 TextFormatter (JavaFX) для ограничения ввода пользователя только для десятичного числа

Индексы MySQL – каковы наилучшие методы?

Надуть представление в фоновом streamе

Создание кнопки изображения + текста с шаблоном управления?

Locate не находит все файлы, которые он должен

Как удалить недопустимые шестнадцатеричные символы из источника данных на основе XML до создания XmlReader или XPathDocument, который использует данные?

Давайте будем гением компьютера.