Как в Си в linux активизировать генератор псевдослучайных чисел?
Модератор: Модераторы разделов
-
nikita Moroz
- Сообщения: 54
- ОС: Linux
Как в Си в linux активизировать генератор псевдослучайных чисел?
Как в Си в linux активизировать генератор псевдослучайных чисел?
-
nesk
- Сообщения: 2268
- Статус: Линукссаксовец
- ОС: MS Windows XP Home SP3
Re: Как в Си в linux активизировать генератор псевдослучайных чисел?
nikita Moroz писал(а): ↑24.01.2008 13:31Как в Си в linux активизировать генератор псевдослучайных чисел?
Случайное число
man srand
man rand
Внимание: У меня под рукой нет машины с Linux. Я не использую эту ОС. Ответы я даю либо по памяти, либо мне помогает гугл. Тщательно читайте маны по тем командам и конфигурационным файлам, которые я упоминаю.
0xDEFEC8ED
0xDEFEC8ED
-
nikita Moroz
- Сообщения: 54
- ОС: Linux
Re: Как в Си в linux активизировать генератор псевдослучайных чисел?
А можно поконкретнее, какие могут быть аргументы у функции srand?
-
eduard_pustobaev
- Сообщения: 2629
- Статус: Ленивец
- ОС: Arch/Debian.
Re: Как в Си в linux активизировать генератор псевдослучайных чисел?
Примерчег:
Это от 0 до 1.
А так просто rand() без деления.
Код: Выделить всё
srand((unsigned)time(NULL));
double R = double(rand()/RAND_MAX);Это от 0 до 1.
А так просто rand() без деления.
В дисгармонии со вселенной.
-
nikita Moroz
- Сообщения: 54
- ОС: Linux
Re: Как в Си в linux активизировать генератор псевдослучайных чисел?
Спасибо, но есть проблемма, функция видимо преобразует системное время до секуннд. Что-то в таком роде. Короче говоря , если запускаешь srand((unsigned)time(NULL)) несколько раз в течении одной секунды, то получаем одни и теже значения. Вроде так.
Как это исправить?
Как это исправить?
-
/dev/random
- Администратор
- Сообщения: 5456
- ОС: Gentoo
Re: Как в Си в linux активизировать генератор псевдослучайных чисел?
Можно получать время функцией gettimeofday, и суммировать (как вариант - xor'ить) секунды с микросекундами.
А можно забить на этот геморрой с инициализацией, и просто читать из /dev/urandom.
А можно забить на этот геморрой с инициализацией, и просто читать из /dev/urandom.
-
nesk
- Сообщения: 2268
- Статус: Линукссаксовец
- ОС: MS Windows XP Home SP3
Re: Как в Си в linux активизировать генератор псевдослучайных чисел?
или инициализировать генератор значением из /dev/urandom
только вот зачем запускать srand несколько раз в течение одной секунды?
запускай его один раз в начале программы.
Внимание: У меня под рукой нет машины с Linux. Я не использую эту ОС. Ответы я даю либо по памяти, либо мне помогает гугл. Тщательно читайте маны по тем командам и конфигурационным файлам, которые я упоминаю.
0xDEFEC8ED
0xDEFEC8ED
-
drag0n
- Сообщения: 156
- Статус: Дракон-линуксоид
- ОС: Slackware Linux
Re: Как в Си в linux активизировать генератор псевдослучайных чисел?
Если программа одновременно запускается несколькими пользователями, то чтобы избежать совпадения сл. чисел:
Код: Выделить всё
srand (time (NULL) + getpid());После каталога /etc понимаешь, что реестр - место, откуда нормальными не возвращаются.