Страницы

Поиск по вопросам

вторник, 13 ноября 2018 г.

Альтернатива rand в СИ

Столкнулся с замечательной функцией rand при построении программы на СИ в ОС Linux. Знаю, что нужно инициализировать генератор с помощью srand.
Но у меня запускается одновременно несколько копий моей программы. В связи с чем все программы получают одно и тоже число.
Есть ли альтернатива rand. которая позволит при одновременном запуске программы (т.е. несколько потоков) каждому экземпляру получить разное число?


Ответ

У srand есть параметр - инициализационное число "случайной" последовательности. Обычно его задают как текущее время. При одновременном старте двух процессов время одинаковое и последовательность получается одинаковая. Вам надо сделать это число уникальным для каждого запускаемого процесса. Для этого можно использовать, например, текущее время умноженное на ID текущего процесса. Или использовать какую нибудь другую уникальную характеристику процесса.

Комментариев нет:

Отправить комментарий