Объясните мне работу RAND()

Whatsername

Новичок
Объясните мне работу RAND()

Прошу прощения за развязанный тон темы.

Читаю в хелпе:
RAND() , RAND(N)
Возвращает случайную величину с плавающей точкой в диапазоне от 0 до 1,0. Если целочисленный аргумент N указан, то он используется как начальное значение этой величины
Объясните, пожалуйста, что разумеется под "начальным значением этой величины", так как тут же приводятся примеры, которые вгоняют меня в ступор.
PHP:
mysql> SELECT RAND();
        -> 0.9233482386203

mysql> SELECT RAND(20);
        -> 0.15888261251047

mysql> SELECT RAND(20);
        -> 0.15888261251047
 

Vital_N

Новичок
Whatsername
думаю не совсем точно переведено, скорее всего перевод должен звучать как: используется как число на основе которого генерится случайное, в аглийской версии есть еще утчонение (producing a repeatable sequence), т.е оно будет повторяться
 

Whatsername

Новичок
Vital_N,
огромное спасибо. Действительно, я не подумал посмотреть английскую версию.

Забавно, что в книге «MySQL» Поля Дюбуа в описании RAND() также используется словосочетание «начальное значение».

Еще раз большое спасибо.
 

[DAN]

Старожил PHPClub
Генераторы случайных чисел на самом деле выдают псевдослучайную последовательность, которая максимально приближена к равномерному распределению на интервале [0,1] (в общем случае).
Каждое последующее псевдослучайное число генерируется на основе предыдущего по определенной формуле. Этакий ряд получается.
Так вот, задавая начальное число для генерации последовательности, ты тем самым задаешь первое значение (N0) для этого ряда.
 

Whatsername

Новичок
[DAN],
насколько я могу понять, в таком случае в качестве аргумента RAND(n) нужно задавать число от 0 до 1.

-~{}~ 10.10.05 17:43:

[DAN],
если не трудно, поясни, пожалуйста, что такое «N0».
 

[DAN]

Старожил PHPClub
Whatsername, нет.
RAND() - это функция, множество значений которой лежит в интервале [0,1].
А "эн нулевое", как заметил товарищ eventtourist, является первым значением, возвращаемым этой функцией.
Тогда N1 = RAND(N0) - второе случайное число и т.д.
Но в качестве начального аргумента может выступать любое число (теоретически). Оно-то как раз и задает ту последовательность псевдослучайных чисел. Если ты не задаешь никакого начального аргумента, то берется некоторый аргумент по-умолчанию.
Проще говоря, аргумент этой функции - отправная точка, относительно которой генерируется вся дальнейшая последовательность.
 
Сверху