MATLAB® использует алгоритмы, чтобы сгенерировать числа pseudoindependent и pseudorandom. Эти числа не строго случайны и независимы в математическом смысле, но они проходят различные статистические тесты случайности и независимости, и их вычисление может быть повторено для тестирования или диагностических целей.
rand
randi
randn
, и randperm
функции являются первичными функциями для создания массивов случайных чисел. rng
функция позволяет вам управлять seed и алгоритмом, который генерирует случайные числа.
Существует четыре основных функции случайных чисел: rand
randi
randn
, и randperm
. rand
функция возвращает вещественные числа между 0 и 1, которые получены из равномерного распределения. Например,
r1 = rand(1000,1);
r1
1000 1 вектор-столбец, содержащий действительные полученные из равномерного распределения числа с плавающей запятой. Все значения в r1
находятся в открытом интервале (0, 1). Гистограмма этих значений является примерно плоской, который указывает на довольно универсальную выборку чисел.randi
функция возвращает double
целочисленные значения чертятся от дискретного равномерного распределения. Например,
r2 = randi(10,1000,1);
r2
1000 1 вектор-столбец, содержащий целочисленные значения, чертившие от дискретного равномерного распределения, область значений которого 1,2..., 10. Гистограмма этих значений является примерно плоской, который указывает на довольно универсальную выборку целых чисел между 1 и 10. randn
функция возвращает массивы действительных чисел с плавающей запятой, которые чертятся от стандартного нормального распределения. Например,
r3 = randn(1000,1);
r3
1000 1 вектор-столбец, содержащий числа, чертившие от стандартного нормального распределения. Гистограмма r3
похож на примерно нормальное распределение, среднее значение которого 0, и стандартное отклонение равняется 1.Можно использовать randperm
функция, чтобы создать массивы случайных целочисленных значений, которые не имеют никаких повторных значений. Например,
r4 = randperm(15,5);
r4
массив 1 на 5, содержащий случайным образом выбранные целочисленные значения на закрытом интервале, [1, 15]. В отличие от randi
, который может возвратить массив, содержащий повторенные значения, массив, возвращенный randperm
не имеет никаких повторных значений.Последовательные вызовы любой из этих функций возвращают различные результаты. Это поведение полезно для создания нескольких различных массивов случайных значений.
MATLAB предлагает несколько опций алгоритма генератора, которые получены в итоге в следующей таблице.
Ключевое слово | Генератор | Несколько передают потоком и подпотоковая поддержка | Аппроксимированный период в полной точности |
---|---|---|---|
mt19937ar | Вихрь Мерсенна (используемый потоком по умолчанию при запуске MATLAB) | Нет | 219937-1 |
dsfmt19937 | SIMD-ориентированный быстрый Вихрь Мерсенна | Нет | 219937-1 |
mcg16807 | Мультипликативный congruential генератор | Нет | 231-2 |
mlfg6331_64 | Мультипликативный изолированный генератор Фибоначчи | Да | 2124 (251 поток длины 272) |
mrg32k3a | Объединенный несколько рекурсивный генератор | Да | 2191 (263 потока длины 2127) |
philox4x32_10 | Philox 4x32 генератор с 10 раундами | Да | 2193 (264 потока длины 2129) |
threefry4x64_20 | Threefry 4x64 генератор с 20 раундами | Да | 2514 (2 256 потоков длины 2258) |
shr3cong | Генератор сдвигового регистра суммирован с линейным congruential генератором | Нет | 264 |
swb2712 | Измененный вычитают с, одалживают генератор | Нет | 21492 |
Используйте rng
функционируйте, чтобы установить seed и генератор, используемый rand
randi
randn
, и randperm
функции. Например, rng('shuffle','philox')
отбирает Philox 4x32 генератор на основе текущего времени, производя различную последовательность чисел каждый раз, когда это называется.
Для получения дополнительной информации смотрите Генерацию случайных чисел Управления.
rand
| randi
| randn
| randperm
| rng