Rnd
 
Возвращает случайное число с точностью Double в диапазоне [0, 1]

Синтаксис

Declare Function Rnd ( ByVal seed As Single = 1.0 ) As Double

Использование

result = Rnd( seed )

Параметры

seed
Необязательный аргумент Single. Если seed имеет значение, равное нулю (0.0), повторяется последнее сгенерированное случайное число. Для любого другого числа , возвращается новое случайное число. С QB-совместимым алгоритмом, отрицательное число полностью переустанавливает генератор. По умолчанию функция без аргумента, что дает возврат нового случайного числа.

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

Возвращает случайное сгенерированное число.

Описание

Возвращает число типа Double в диапазоне [0, 1] (т.е. 0 <= Rnd < 1), основанное на случайной установке (см. Randomize).

Rnd может использовать целый ряд различных алгоритмов - см. Randomize для подробной информации и возможности выбора алгоритмов.

Rnd будет возвращать ту же последовательность чисел, при каждом запуске программы. Эта последовательность может быть изменена путем задания стартового значения генератора (см. Randomize).

Пример

'' Функция случайного числа в диапазоне [first, last), или {first <= x < last}.
Function rnd_range (first As Double, last As Double) As Double
    Function = Rnd * (last - first) + first
End Function

'' задаем начальное значение генератора случайных чисел, в результате последовательность не та же самая каждый раз при запуске программы
Randomize

'' печатаем случайное число в диапазоне [0, 1], или {0 <= x < 1}.
Print Rnd

'' печатаем случайное число в диапазоне [0, 10], или  {0 <= x < 10}.
Print Rnd * 10

'' печатаем интегральное случайное число в диапазоне [1, 11], или  {1 <= x < 11}.
'' число будет целое, это эквивалентно диапазону [1, 10], или {1 <= n <= 10}.
Print Int(Rnd * 10) + 1

'' печатаем интегральное случайное число в диапазоне [69, 421], или {69 <= x < 421}.
'' это эквивалентно диапазону [69, 420], или {69 <= n <= 420}.
Print Int(rnd_range(69, 421))


Различия диалектов

Алгоритм используемый по умолчанию зависит от текущего используемого диалекта:
    • С диалектом -lang fb, используется 32-битная функция Mersenne Twister с гранулярностью 32 бита.
    • С диалектом -lang qb , функция, дает тот же результат, что и Rnd в QB. Гранулярность составляет 24 бита.
    • С диалектами -lang deprecated и -lang fblite , используется функция C runtime. Функция в Win32 имеет гранулярность 15 бит , а в Linux и DOS 32 бита.

Отличия от QB

  • Нет отличий, если скомпилировано с диалектом -lang qb. Другие диалекты также могут использовать задание начального значения и другие алгоритмы генерации путем вызова Randomize с помощью соответствующего параметра.
  • Для не QB-совместимых алгоритмов, если необязательный аргумент меньше 0, он имеет тот же смысл, как передача аргумента 1.

См. также