Функция Random

         Описание функции


Random

Генерирует псевдо-случайное число с плавающей точкой.

Random ( [ Min = 0 [, Max = 1 [, Flag = 0 ]]] )

Параметры

Min [необязательный] Наименьшее генерируемое число. По умолчанию 0.
Max [необязательный] Наибольшее генерируемое число. По умолчанию 1.
Flag [необязательный] Определяет возвращаемое число
0 - (по умолчанию) Возвращает число с плавающей точкой
1 - Возвращает только целые числа.

Возвращаемое значение

Успех:Возвращает псевдо-случайное число с плавающей точкой из промежутка [Min;Max). Если Flag = 1 - из промежутка [Min;Max]
Ошибка:Возвращает 0 и устанавливает @error равным 1 при неправильных параметрах.

Примечания

Если функции передан только один параметр - он будет интерпретирован как Max.

Результат будет в диапазоне от минимального до максимального ВКЮЧИТЕЛЬНО при использовании целых чисел (немного меньше максимального при использовании с плавающей точкой).

При использовании целых чисел Max-Min должны быть меньше 2^31.


Комментарии из оригинальных источников

Эта функция использует генератор случайных чисел Вихрь Мерсенна, MT19937, написанный Макото Мацумото, Такудзи Нисимура, Shawn Cokus, Matthe Bellew и Isaku Wada.

Вихрь Мерсенна является алгоритмом генерации случайных чисел. Он был разработан, учитывая недостатки других вариантов генераторов. Период равный 219937-1, порядок пространственного эквираспространения, 623 измерения, являются значительно высокими. Также генератор быстр; это избавляет от умножения и деления, и преимущество от кэша и конвейера. Дополнительную информацию можете посмотреть на странице разработчиков http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/emt.html


Copyright (C) 1997 - 2002, Макото Мацумото и Такудзи Нисимура, все права защищены.

Распространение и использование в исходников и бинарных форм, с модификацией или без неё, разрешены при соблюдении следующих условий:

1. При повторном распространении исходного кода должно оставаться указанное выше уведомление об авторском праве, этот список условий и последующий отказ от гарантий.

2. При повторном распространении двоичного кода должна сохраняться указанная выше информация об авторском праве, этот список условий и последующий отказ от гарантий в документации и/или в других материалах, поставляемых при распространении.

3. Имена разработчиков алгоритма не могут быть использованы для поддержки или продвижения программ, основанных на этом алгоритме без предварительного письменного разрешения.

ЭТА ПРОГРАММА ПРЕДОСТАВЛЯЕТСЯ ВЛАДЕЛЬЦАМИ АВТОРСКИХ ПРАВ И РАЗРАБОТЧИКАМИ "КАК ЕСТЬ" БЕЗ КАКОГО-ЛИБО ВИДА ГАРАНТИЙ, ВЫРАЖЕННЫХ ЯВНО ИЛИ ПОДРАЗУМЕВАЕМЫХ, ВКЛЮЧАЯ, НО НЕ ОГРАНИЧИВАЯСЬ ИМИ, ПОДРАЗУМЕВАЕМЫЕ ГАРАНТИИ КОММЕРЧЕСКОЙ ЦЕННОСТИ И ПРИГОДНОСТИ ДЛЯ КОНКРЕТНОЙ ЦЕЛИ. НИ ПРИ КАКИХ ОБСТОЯТЕЛЬСТВАХ ВЛАДЕЛЕЦ АВТОРСКИХ ПРАВ НЕ НЕСЕТ ОТВЕТСТВЕННОСТИ ЗА ПРЯМЫЕ, КОСВЕННЫЕ, СЛУЧАЙНЫЕ, СПЕЦИАЛЬНЫЕ, ШТРАФНЫЕ, ИЛИ ПОСЛЕДОВАВШИЕ УБЫТКИ (ВКЛЮЧАЯ, НО НЕ ОГРАНИЧИВАЯСЬ, ПРИОБРЕТЕНИЕ ЗАМЕНЯЮЩИХ ТОВАРОВ ИЛИ УСЛУГ; ПОТЕРЮ ДАННЫХ ИЛИ ПРИБЫЛИ; ИЛИ ПРИОСТАНОВЛЕНИЕ БИЗНЕСА) НЕЗАВИСИМО ОТ УСЛОВИЙ ИХ ВОЗНИКНОВЕНИЯ И ОТ ЛЮБОЙ ТЕОРИИ НАСТУПЛЕНИЯ ОТВЕТСТВЕННОСТИ, НЕЗАВИСИМО ОТ КОНТРАКТА, ОБЪЕКТИВНОЙ ОТВЕТСТВЕННОСТИ, ИЛИ ПРАВОНАРУШЕНИЯ (ВКЛЮЧАЯ НЕБРЕЖНОСТЬ ИЛИ ИНЫЕ ПРИЧИНЫ) ВОЗНИКАЮЩИЕ ИЗ-ЗА ИСПОЛЬЗОВАНИЯ ДАННОГО ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ, ДАЖЕ ЕСЛИ БЫЛО ИЗВЕЩЕНО О ВОЗМОЖНОСТИ ВОЗНИКНОВЕНИЯ ТАКИХ УБЫТКОВ.

См. также

SRandom, Round

Пример

Example1() ; Игра в подбрасывание монеты и угадывание Орёл или Решка
Example2() ; Прокручивание ролика
Example3() ; Случайная буква

Func Example1()
    If Random(0, 1, 1) Then ; Возвращает значения 0 или 1.
        $msg = "Орёл, проигрыш"
    Else
        $msg = "Решка, выигрыш"
    EndIf
    MsgBox(4096, "Бросок монеты", $msg)
EndFunc

Func Example2()
    MsgBox(4096, "Прокручивание ролика", "Вы прокрутили " & Random(1, 6, 1))

    $StockPrice = 98
    ; В середине игрового симулятора фондовой биржи
    $StockPriceChange = Random(-10, 10, 1) ; генерируем целое между -10 и 10
    $StockPrice = $StockPrice + $StockPriceChange
    If $StockPriceChange < 0 Then
        MsgBox(4096, "Фондовое изменение", "Ваши акции опустились в $" & $StockPrice)
    ElseIf $StockPriceChange > 0 Then
        MsgBox(4096, "Фондовое изменение", "Ваши акции поднялись $" & $StockPrice)
    Else
        MsgBox(4096, "Фондовое изменение", "Ваши акции остались $" & $StockPrice)
    EndIf
EndFunc

Func Example3()
    ; Случайная буква
    If Random(0, 1, 1) Then
        ; Заглавная
        $Letter = Chr(Random(Asc("A"), Asc("Z"), 1))
    Else
        ; строчная
        $Letter = Chr(Random(Asc("a"), Asc("z"), 1))
    EndIf
    MsgBox(4096, "Случайная буква", $Letter)
EndFunc