Создание массивов случайных чисел

MATLAB® использует алгоритмы, чтобы сгенерировать числа pseudoindependent и pseudorandom. Эти числа не строго случайны и независимы в математическом смысле, но они проходят различные статистические тесты случайности и независимости, и их вычисление может быть повторено для тестирования или диагностических целей.

randrandirandn, и randperm функции являются первичными функциями для создания массивов случайных чисел. rng функция позволяет вам управлять seed и алгоритмом, который генерирует случайные числа.

Функции случайных чисел

Существует четыре основных функции случайных чисел: randrandirandn, и 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
dsfmt19937SIMD-ориентированный быстрый Вихрь Мерсенна Нет219937-1
mcg16807Мультипликативный congruential генераторНет231-2
mlfg6331_64Мультипликативный изолированный генератор ФибоначчиДа2124 (251 поток длины 272)
mrg32k3aОбъединенный несколько рекурсивный генераторДа2191 (263 потока длины 2127)
philox4x32_10Philox 4x32 генератор с 10 раундамиДа2193 (264 потока длины 2129)
threefry4x64_20Threefry 4x64 генератор с 20 раундамиДа2514 (2 256 потоков длины 2258)
shr3congГенератор сдвигового регистра суммирован с линейным congruential генераторомНет264
swb2712Измененный вычитают с, одалживают генераторНет21492

Используйте rng функционируйте, чтобы установить seed и генератор, используемый randrandirandn, и randperm функции. Например, rng('shuffle','philox') отбирает Philox 4x32 генератор на основе текущего времени, производя различную последовательность чисел каждый раз, когда это называется.

Для получения дополнительной информации смотрите Генерацию случайных чисел Управления.

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

| | | |

Похожие темы