Начальное значение для случайной функции переполнения стека

Мне нужно заполнить случайную функцию начальным числом 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;

}

0

Решение

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

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

srand(time(NULL));

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

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

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]