Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: функции случайных чисел. Как они работают?
 
 автор: iham   (02.05.2007 в 15:59)   письмо автору
 
 

Доброго времени суток. Мой вопрос не из вопросов по программированию. Скорее из серии "хочу все знать".

Как же все таки работают эти функции? Ведь они должны быть как-то связаны со случайной величиной. Но я не встречал таковой. Кто знает, подскажите, пожалуйста.

Спасибо.

   
 
 автор: CrazyAngel   (02.05.2007 в 16:25)   письмо автору
 
   для: iham   (02.05.2007 в 15:59)
 

эм... например на микровремени....

   
 
 автор: cheops   (02.05.2007 в 17:00)   письмо автору
 
   для: iham   (02.05.2007 в 15:59)
 

Используется несколько вариантов: текущее время (редко), ошибки деления чисел с плавающей точкой (часто), специальные хаос-файлы (UNIX), которые формируются на основании нажатия клавиш клавиатуры и движения мыши.

   
 
 автор: Trianon   (02.05.2007 в 17:06)   письмо автору
 
   для: iham   (02.05.2007 в 15:59)
 

сама функция rand() никак ни с чем не связана. Она просто перебирает по кругу 2^32 чисел.
связана srand()

   
 
 автор: cheops   (02.05.2007 в 18:06)   письмо автору
 
   для: Trianon   (02.05.2007 в 17:06)
 

Начиная с версии 4.2.0 srand() автоматически вызывается при вызове rand().

   
 
 автор: Trianon   (02.05.2007 в 19:15)   письмо автору
 
   для: cheops   (02.05.2007 в 18:06)
 

Конечно. Но суть работы самого LCG-генератора от этого никак не меняется.

   
 
 автор: iham   (02.05.2007 в 20:47)   письмо автору
 
   для: Trianon   (02.05.2007 в 19:15)
 

Доброго времени суток.

Я вот тоже на время думал :) Но этот способ череват последовательность (всё равно ее можно определить, я думаю).

А вот с плавающей запятой, можно поподробнее. В ЮНИХ системы и лезть не хочется =)

Спасибо.

   
 
 автор: Trianon   (02.05.2007 в 20:57)   письмо автору
 
   для: iham   (02.05.2007 в 20:47)
 

Задача стандартного rand() не в том, чтобы никто не просек последовательность - она как раз открытая, а в том, чтоб эта последовательность была а) статистически равномерно распределенной и б) возможно более длинной. Этим требованиям LCG удовлетворяет.

а что у Вас за проблема? Как Вы хотите эти числа применять?

   
 
 автор: iham   (02.05.2007 в 23:29)   письмо автору
 
   для: Trianon   (02.05.2007 в 20:57)
 

Доброго времени суток.

>а что у Вас за проблема? Как Вы хотите эти числа применять?
Да ни в чем. Просто мне стало интересно, как я простыми, так сказать, действиями могу получить случайную величину. Вот и все.

   
 
 автор: cheops   (02.05.2007 в 23:32)   письмо автору
 
   для: iham   (02.05.2007 в 20:47)
 

>А вот с плавающей запятой, можно поподробнее. В ЮНИХ системы и лезть не хочется =)
Имеются специальные алгоритмы (я из библиотеки Fortran таскаю и переписываю - у него наиболее полная мат.библиотека)... однако, прибегать к сторонним алгоритмам следует когда встроенная функция не обладает достаточной стат.равномерностью (например, у вас очень щепетильные расчёты методом Монте-Карло)... в общем больше никакие причин использовать что-то другое действительно нет... Вы что хотите сделать?

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования