random
Сгенерируйте случайные целые числа
Блокноты MuPAD® будут демонтированы в будущем релизе. Используйте live скрипты MATLAB® вместо этого.
Live скрипты MATLAB поддерживают большую часть функциональности MuPAD, хотя существуют некоторые различия. Для получения дополнительной информации смотрите, Преобразовывают Notebook MuPAD в Live скрипты MATLAB.
random() random(n1 .. n2
) random(n
)
random()
возвращает случайное целое число между 0 и 1012.
random(n1..n2)
возвращает процедуру, которая генерирует случайные целые числа между n1
и n2
.
Вызовы random()
возвращают равномерно распределенные случайные целые числа между 0 и 999999999988 (приблизительно 1 012).
r := random(n1..n2)
производит генератор случайных чисел r
. Последующие вызовы r()
генерируют равномерно распределенные случайные целые числа между n1
и n2
.
random(n)
эквивалентен random(0 .. n - 1)
.
Глобальная переменная SEED
используется для инициализации или изменения последовательности случайных чисел. Это может быть присвоено любое ненулевое целое число. Значение SEED
фиксирует последовательность случайных чисел. Это может использоваться, чтобы сбросить случайные генераторы и воспроизвести случайные последовательности.
SEED
установлен в значение по умолчанию, когда MuPAD® инициализируется. Таким образом, каждый раз, когда MuPAD запускается или повторно инициализируется с функцией reset
, случайные генераторы производят ту же последовательность чисел.
Чтобы получить непредсказуемое начальное значение, сделайте его зависящим от текущего времени. Смотрите Пример 5.
Несколько случайных генераторов, произведенных random
, могут запуститься одновременно. Все генераторы используют ту же глобальную переменную SEED
.
Для создания равномерно распределенных чисел плавающих точек рекомендуется использовать более быстрый функциональный frandom
вместо этого. Библиотека статистики предоставляет случайным генераторам различные другие дистрибутивы. Cf. Пример 4.
random
, а также генераторы случайных чисел, созданные им, чувствителен к переменной окружения SEED
.
random
и генераторы случайных чисел, созданные им, изменяют переменную окружения SEED
на каждом вызове.
Следующий вызов производит последовательность случайных целых чисел. Обратите внимание на то, что индексная переменная i
должна использоваться в конструкции последовательности. Вызов, такой как random() $8
произвел бы 8 копий того же случайного значения:
random() $ i = 1..8
Следующий вызов производит “умирание”, которое прокручивается 20 раз:
die := random(1..6): die() $ i = 1..20
Следующий вызов выпускает “монету”, которая производит “голову” или “хвост”:
coin := random(2): coin() $ i = 1..10
subs(%, [0 = head, 1 = tail])
delete dice, coin:
random
чувствителен к глобальной переменной SEED
, который установлен и сброшен, когда MuPAD (пере-) инициализирован. Seed может также быть установлен пользователем. Случайные последовательности могут быть воспроизведены начиная с фиксированного SEED
:
SEED := 1: random() $ i = 1..4
SEED := 1: random() $ i = 1..4
random
позволяет вам создавать несколько генераторов случайных чисел для различных областей значений чисел и использовать их одновременно:
r1 := random(0..4): r2 := random(2..9): [r1(), r2()] $ i = 1..6
delete r1, r2:
random
может использоваться, чтобы создать случайный генератор для равномерно распределенных чисел с плавающей запятой. Следующий генератор производит такие числа между -1.0
и 1.0
:
r := float@random(-10^DIGITS..10^DIGITS)/10^DIGITS: r() $ i = 1..12;
Однако строго рекомендуется использовать намного более эффективные функции frandom
или stats::uniformRandom
вместо этого:
r := stats::uniformRandom(-1, 1, Seed = 10^10): r() $ i = 1..12
delete r:
Обычно, random
используется, чтобы сгенерировать экспериментальный вход или “случайные” примеры. В этих случаях воспроизводимость является хорошей вещью. Однако при случае “более случайная” последовательность желательна. Обычный способ получить случайный seed в программе состоит в том, чтобы использовать текущее системное время:
SEED := round(1e10*frandom(CurrentTime)())
1035804049
random(), random()
861209862222, 269921735546
|
Целые числа с n 1 <n 2 |
|
Положительное целое число |
random()
возвращает неотрицательное целое число. Вызовы random(n1..n2)
и random(n)
возвращают процедуру типа DOM_PROC
.
random
реализует линейный генератор конгруэтности. Последовательностью псевдослучайных чисел, сгенерированных путем вызова random()
много раз, является f (x), f (f (x)), …., где x является начальным значением SEED
, и f является функцией, сопоставляющей x с a x ультрасовременный m с подходящими целочисленными константами a и m.