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 вместо этого. Библиотека статистики предоставляет случайным генераторам различные другие распределения. См. Пример 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