Форум русскоязычного сообщества Ubuntu


Автор Тема: Инициализация srand()  (Прочитано 3091 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн pluton

  • Автор темы
  • Новичок
  • *
  • Сообщений: 17
    • Просмотр профиля
Инициализация srand()
« : 26 Марта 2008, 23:40:41 »
привет!
есть вопрос: как нормально инициализировать генератор псевдо-случайных чисел?
видел пример такой
srand ( time(NULL) );но это не подходит, т.к. мой процесс делает два форка. те процессы выполняются оч быстро, тоесть меньше одной секунды. поэтому ряд чисел у них одинаковый. как можно вернуть количество микросекунд с 00:00 hours, Jan 1, 1970 UTC?

clock() возвращает тики, а если делить на CLOCKS_PER_SEC опять получаются секунды.
нашёл тип useconds_t - Used for time in microseconds. как в него вернуть таймстамп или колво микросекунд со времени запуска системы?

зы. и "глобальный" вопрос - почему многие функции работают именно с секундами, а не с микросекундами?
спасибо
« Последнее редактирование: 27 Марта 2008, 00:01:04 от pluton »

Оффлайн Apocalypse

  • Новичок
  • *
  • Сообщений: 34
    • Просмотр профиля
    • Мой ВКонтактик
Re: Инициализация srand()
« Ответ #1 : 31 Марта 2008, 20:05:44 »
srand(time(0)) сильно отличается от
srand(time(NULL)) ?
если я не ошибаюсь, это именно то, что тебе нужно.

Оффлайн pluton

  • Автор темы
  • Новичок
  • *
  • Сообщений: 17
    • Просмотр профиля
Re: Инициализация srand()
« Ответ #2 : 31 Марта 2008, 20:40:02 »
srand(time(0)) сильно отличается от
srand(time(NULL)) ?
вообще ничем не отличается.
это мне не подходит, выше я писал почему (два процесса выполняются быстрее, чем за секунду)

Оффлайн Lion-Simba

  • Старожил
  • *
  • Сообщений: 1126
    • Просмотр профиля
Re: Инициализация srand()
« Ответ #3 : 31 Марта 2008, 21:28:25 »
а если рассмотреть вариант с чтением из
/dev/urandom
?
Оказываю индивидуальную платную техподдержку широкого профиля. Обращаться в ЛС или Jabber.

Оффлайн pluton

  • Автор темы
  • Новичок
  • *
  • Сообщений: 17
    • Просмотр профиля
Re: Инициализация srand()
« Ответ #4 : 31 Марта 2008, 21:33:11 »
а если рассмотреть вариант с чтением из
/dev/urandom
?
это надо открывать этот девайс как файл, и дальше read() ? как там с заданием начальных значений?

Thread

  • Гость
Re: Инициализация srand()
« Ответ #5 : 31 Марта 2008, 22:03:00 »
Правильно советуют, /dev/random или /dev/urandom - то, что тебе нужно. Если читать из этих файлов, то всегда получаешь случайные символы.

Оффлайн Lion-Simba

  • Старожил
  • *
  • Сообщений: 1126
    • Просмотр профиля
Re: Инициализация srand()
« Ответ #6 : 01 Апреля 2008, 06:10:14 »
а если рассмотреть вариант с чтением из
/dev/urandom
?
это надо открывать этот девайс как файл, и дальше read() ? как там с заданием начальных значений?
Да. Это общесистемный генератор случайных чисел, поэтому нет необходимости его инициализировать.
http://ru.wikipedia.org/wiki//dev/random

Вот, для себя узнал, чем отличается /dev/random от /dev/urandom :)
Оказываю индивидуальную платную техподдержку широкого профиля. Обращаться в ЛС или Jabber.

 

Страница сгенерирована за 0.033 секунд. Запросов: 25.