Я в основном пытаюсь создать компьютерную симуляцию идеи игры в казино, которая использует стандартную колоду из 52 карт.
Я хотел бы запустить 1000 игр одновременно.
Я использовал srand (time (NULL)) раньше, но я не думаю, что возможно вывести 1000 различных последовательностей случайных чисел одновременно с этим, не так ли? Я считаю, что, поскольку все числа генерируются одновременно, все они будут одинаковыми.
Есть ли способ использовать первое сгенерированное случайное число для посева 1000 новых 52 числовых последовательностей?
Спасибо
Заполнение одним и тем же номером всегда приведет к одинаковой последовательности псевдослучайных чисел. До тех пор, пока вы не перезапускаете одно и то же начальное число между итерациями, (под) последовательности не будет то же самое.
Да, вы можете иметь свой первый генератор случайных чисел time(NULL)
) вывести 1000 случайных чисел, каждое из которых можно использовать в качестве начального числа для 1000 отдельных генераторов случайных чисел.
Я считаю, что так как все числа генерируются одновременно
время, что они все будут одинаковыми
Они есть не генерируется в то же время. Я предполагаю, что вы используете цикл for? Каждая итерация не
в то же время».
Вы даже проверяли эту теорию?
for i = 1 to 1000 do
{
print <time to ms resolution>
print <random number>
}
попробуйте заполнить функцию 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();
}