Мне нужно заполнить случайную функцию начальным числом 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;
}
Вот так работает псевдослучайный генератор. Каждый раз, когда вы вводите одинаковое начальное число, оно выводит одинаковые числа в одинаковой последовательности.
Чтобы это исправить, используйте time(NULL)
вместо:
srand(time(NULL));
И только звонок srand
один раз в вашей программе.
Если у вас есть доступ к C ++ 11, вы действительно должны использовать новый <random>
функциональность заголовка, хотя, пример Вот.
Других решений пока нет …