Начальное значение для случайной функции C++

Мне нужно заполнить случайную функцию начальным числом 2222. Функция shuffleDeck() вызывает random_shuffle из библиотеки std.

Примечание: проблема в том, что каждый раз, когда я запускаю программу с no_deals=5 и cards_per_hand=5, я получаю один и тот же шаблон:

Пиковый валет, Король алмазов, 10 червей, 4 трефы, Король пиков, 8 алмазов, 3 алмаза, 3 алмаза, 7 червей, 5 треф, 3 червы, 10 червей, 6 Бубны, Король Пиков, Бубновый валет, 7 Червей, 3 бриллианта, Бубновый Король, Бубновый валет 3,

Разве не должно быть изменений? Правильно ли я ввел начальное число 2222?

srand(2222);

for (int i=0; i<no_deals; i++)
{
   // test.shuffleDeck();
         for(int j=0; j<cards_per_hand; j++)
      {
                //test.dealCard();

                check.at(j)=test.dealCard();
                cout<<check.at(j)<<", ";
                test.shuffleDeck();
      }

       cout<<endl;

}

1 ответ

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

Чтобы это исправить, используйте time(NULL) вместо:

srand(time(NULL));

И только звонок srand один раз в вашей программе.

Если у вас есть доступ к C++11, вы действительно должны использовать новый <random> Функциональность заголовка, хотя, пример здесь.

Другие вопросы по тегам