srand — генерирует 1000 случайных перетасовок колоды карт Stack Overflow

Я в основном пытаюсь создать компьютерную симуляцию идеи игры в казино, которая использует стандартную колоду из 52 карт.

Я хотел бы запустить 1000 игр одновременно.

Я использовал srand (time (NULL)) раньше, но я не думаю, что возможно вывести 1000 различных последовательностей случайных чисел одновременно с этим, не так ли? Я считаю, что, поскольку все числа генерируются одновременно, все они будут одинаковыми.

Есть ли способ использовать первое сгенерированное случайное число для посева 1000 новых 52 числовых последовательностей?

Спасибо

3

Решение

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

0

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

Да, вы можете иметь свой первый генератор случайных чисел time(NULL)) вывести 1000 случайных чисел, каждое из которых можно использовать в качестве начального числа для 1000 отдельных генераторов случайных чисел.

1

Я считаю, что так как все числа генерируются одновременно
время, что они все будут одинаковыми

Они есть не генерируется в то же время. Я предполагаю, что вы используете цикл for? Каждая итерация не
в то же время».

Вы даже проверяли эту теорию?

for i = 1 to 1000 do
{
print <time to ms resolution>
print <random number>
}
1

попробуйте заполнить функцию rand () srand(time(NULL)*getpid()), PID процесса, который вы вызываете 1000 раз, должен зависеть от системы и иметь хорошие шансы отличаться друг от друга.

Если вы используете потоки для разных игр, используйте threadID вместо getpid ().

Если вы хотите, вы можете предварительно сгенерировать все случайные числа сразу и использовать их позже:

int random_numbers[1000];
for (i = 0; i < 1000; i++) {
srand(time(NULL)*(i+1));
random_numbers[i] = rand();
}
0
По вопросам рекламы [email protected]