Функция rand()
является генератором чисел псевдослучайного .Это означает, что последовательность сгенерированных чисел является детерминированной и зависит только от предоставленного начального числа.
Поскольку вы выполняете один и тот же процесс 10 раз, состояние генератора случайных чисел одинаководля каждого ребенка.В следующий раз, когда вы вызовете rand()
, вы получите то же самое значение.
Вызывая srand(time(NULL))
внутри дочернего процесса, вы потенциально помогаете, но гранулярность time()
только1 секунда, так что все ваши дети, вероятно, начинают в одну и ту же секунду.При заполнении с тем же значением создается та же псевдослучайная последовательность.
Вы можете попробовать заполнить со значением, которое зависит от номера ребенка:
srand(time(NULL) - i*2);
(я использовал i*2
всобытие, которое time()
продвигается на 1 секунду во время цикла разветвления.)