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 на каждом вызове.

Примеры

Пример 1

Следующий вызов производит последовательность случайных целых чисел. Обратите внимание на то, что индексная переменная 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:

Пример 2

random чувствителен к глобальной переменной SEED, который установлен и сброшен, когда MuPAD (пере-) инициализирован. Seed может также быть установлен пользователем. Случайные последовательности могут быть воспроизведены начиная с фиксированного SEED:

SEED := 1: random() $ i = 1..4

SEED := 1: random() $ i = 1..4

Пример 3

random позволяет вам создавать несколько генераторов случайных чисел для различных областей значений чисел и использовать их одновременно:

r1 := random(0..4): r2 := random(2..9): [r1(), r2()] $ i = 1..6

delete r1, r2:

Пример 4

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:

Пример 5

Обычно, random используется, чтобы сгенерировать экспериментальный вход или “случайные” примеры. В этих случаях воспроизводимость является хорошей вещью. Однако при случае “более случайная” последовательность желательна. Обычный способ получить случайный seed в программе состоит в том, чтобы использовать текущее системное время:

SEED := round(1e10*frandom(CurrentTime)())
1035804049
random(), random()
861209862222, 269921735546

Параметры

n1, n2

Целые числа с n 1 <n 2

n

Положительное целое число

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

random() возвращает неотрицательное целое число. Вызовы random(n1..n2) и random(n) возвращают процедуру типа DOM_PROC.

Алгоритмы

random реализует линейный генератор конгруэтности. Последовательностью псевдослучайных чисел, сгенерированных путем вызова random() много раз, является f (x), f (f (x)), …., где x является начальным значением SEED, и f является функцией, сопоставляющей x с ax ультрасовременный m с подходящими целочисленными константами a и m.

Смотрите также

Функции MuPAD