Случайные числа
r = rand() r = rand(m1,m2,...) r = rand(m1,m2,...,key) r = rand(x) r = rand(x,key) s = rand("seed") rand("seed",s) rand(key) key = rand("info")
целые числа, размер матрицы случайных чисел r
.
строка, распределение случайных чисел (по умолчанию
key="uniform"
). Доступными значениями являются
"uniform"
(равновероятный) и "normal"
(нормальный).
вещественная или комплексная матрица. Рассматриваются только её вещественное или комплексное содержимое и её размеры.
вещественный массив чисел двойной точности (double) размером m1 на m2 на ... со случайными элементами.
матрица чисел двойной точности размером 1 на 1, целочисленное значение,
положительное, семя генератора случайных чисел (по умолчанию s=0
).
Назначение данной функции в том, чтобы возвращать матрицу чисел двойной точности со случайными вещественными или комплексными элементами. В зависимости от входных аргументов, функция может возвращать матрицу случайных чисел двойной точности или может получать или устанавливать закон распределения случайных чисел, или может получать или устанавливать семя генератора случайных чисел.
возвращает матрицу чисел двойной точности размером 1 на 1 с одним случайным значением.
это матрица случайных чисел размером m1
на m2
.
возвращает матрицу случайных чисел размером m1
на
m2
на ... на mn
.
возвращает матрицу случайных чисел того же размера, что и a
.
Матрица r
является вещественной, если a
является вещественной и r
является комплексной,
если a
является комплексной матрицей.
Входной аргумент key
устанавливает закон распределения генерируемых
случайных чисел.
устанавливает генератор случайных чисел на генерацию случайных чисел по равновероятному закону. Случайные числа равномерно распределены на интервале [0,1).
устанавливает генератор случайных чисел на генерацию случайных чисел по нормальному (Гаусс-Лапласовскому) закону распределения, с математическим ожиданием 0 и дисперсией 1.
возвращает текущий закон распределения генератора случайных чисел ("uniform" для равновероятного или "normal" для нормального).
Есть возможность получить или установить семя генератора случайных чисел.
возвращает текущее значение семени.
устанавливает семя генератора случайных чисел равным s
(по умолчанию s=0
при первом вызове).
В следующем примере мы генерируем случайные числа двойной точности с различными законами распределения.
В следующем примере мы изменим закон распределения чисел, генерируемых функцией
rand
. Сначала генерируем числа по нормальному закону распределения,
а затем числа но равновероятному закону на интервале [0,1).
В следующем примере мы сгенерируем матрицу комплексных чисел размером 2 на 3 по нормальному закону распределения.
В следующем примере мы построим на графике распределение случайных равновероятных чисел,
полученных rand
.
r=rand(1000,1,"uniform"); scf(); histplot(10,r); xtitle("Равновероятные числа из rand","X","Частота") | ![]() | ![]() |
В следующем примере мы построим на графике распределение случайных чисел,
сгенерированных rand
по нормальному закону распределения.
Генератор псевдослучайных "равновероятных" чисел является детерминированной последовательностью, которая предназначена для воспроизводства независимых одинаково распределённых чисел, равновероятных на интервале [0,1).
Для того, чтобы получить повторяемые моделирования, начальное семя генератора случайных
чисел равно нулю, так что последовательность будет оставаться одной и той же от одной
сессии к другой. Иными словами, начальные числа, производимые rand()
,
всегда: 0.2113249, 0.7560439, ...
В некоторых случаях моделирования мы можем захотеть инициализировать семя генератора
случайных чисел для того, чтобы получить менее предсказуемые последовательности.
В этом случае мы можем инициализировать семя с помощью выходного значения функции
getdate
:
n=getdate("s"); rand("seed",n); | ![]() | ![]() |
Генератор случайных "равновероятных" чисел описан в работе Майкла А. Малькольма, (Michael A. Malcolm), Клива Б. Молера (Cleve B. Moler) "Urand, A Universal Random Number Generator" (Urand, Универсальный Генератор Случайных Чисел), Stan-Cs-73-334, январь 1973, факультет информатики, кафедра гуманитарных и естественных наук Стенфордского университета.
Это линейный конгруэнтный генератор вида:
x = (a x + c) mod M
где константами являются
a = 843314861 |
c = 453816693 |
M = 231 |
Согласно авторам, этот генератор является генератором полной длины, иначе говоря, его период равен M = 231 = 2147483648.
Генератор случайных чисел с нормальным распределением ("normal"
)
основан на методе Бокса-Мюллера, где источником равновероятных случайных чисел является Urand.
В функции grand доступны более лучшие генераторы случайных
чисел в том смысле, что они имеют как более длинный период, так и более лучшие
статистические свойства. В случае, когда качество случайных чисел имеет значение,
следует использовать функцию grand
.
Более того, функция grand
имеет больше возможностей.