rng

Управляйте генератором случайных чисел

Описание

пример

rng(seed) задает seed для MATLAB® генератор случайных чисел. Для примера, rng(1) инициализирует генератор Случайных Чисел Вихрь Мерсенна с помощью seed 1.

The rng функция управляет глобальным потоком, который определяет, как rand, randi, randn, и randperm функции формируют последовательность случайных чисел. Чтобы создать один или несколько независимых потоков, отдельных от глобального потока, см. RandStream и RandStream.create.

пример

rng(seed,generator) также задает тип генератора случайных чисел, который будет использоваться. Для примера, rng(0,'philox') инициализирует случайный генератор Philox 4x32 с начальным числом 0.

пример

s = rng возвращает текущие настройки генератора случайных чисел в структуре s.

Примеры

свернуть все

Установите генератор случайных чисел на seed по умолчанию (0) и алгоритм (Вихрь Мерсенна), затем сохраните настройки генератора.

rng('default')
s = rng
s = struct with fields:
     Type: 'twister'
     Seed: 0
    State: [625x1 uint32]

Создайте вектор-строку 1 на 5 случайных значений от 0 до 1.

x = rand(1,5)
x = 1×5

    0.8147    0.9058    0.1270    0.9134    0.6324

Измените seed и алгоритм генератора и создайте новый случайный вектор-строку.

rng(1,'philox')
xnew = rand(1,5)
xnew = 1×5

    0.5361    0.2319    0.7753    0.2390    0.0036

Теперь восстановите исходные настройки генератора и создайте случайный вектор. Результат соответствует исходному вектору-строке x создан с генератором по умолчанию.

rng(s)
xold = rand(1,5)
xold = 1×5

    0.8147    0.9058    0.1270    0.9134    0.6324

Входные параметры

свернуть все

Инициализация генератора, заданная как один из следующих опций.

ЗначениеОписание
0Инициализирует генератор с начальным 0.
положительное целое числоИнициализирует генератор с заданным положительным целым seed, таким как 1.
'default'Инициализирует генератор Случайных Чисел Вихрь Мерсенна с начальным 0. Это значение по умолчанию в начале каждого сеанса работы с MATLAB.
'shuffle'Инициализирует генератор на основе текущего времени, получая разную последовательность случайных чисел после каждого вызова в rng.
структураИнициализирует генератор на основе настроек, содержащихся в структуре с полями Type, Seed, и State.

Алгоритм случайных чисел, заданный как один из опций в таблице. Для получения дополнительной информации об алгоритмах генератора смотрите Создание и управление потоком случайных чисел.

ЗначениеИмя генератораКлючевое слово генератора
'twister'Вихрь Мерсеннаmt19937ar
'simdTwister'SIMD-ориентированный Fast Вихрь Мерсеннаdsfmt19937
'combRecursive'Комбинированное несколько рекурсивныхmrg32k3a
'multFibonacci'Мультипликативный Lagged Fibonaccimlfg6331_64
'philox'Генератор Philox 4x32 с 10 патронамиphilox4x32_10
'threefry'Трехфазный генератор 4x64 с 20 патронамиthreefry4x64_20

Для устаревших генераторов, используемых в MATLAB версий 4.0 и 5.0, используйте один из следующих опций.

ЗначениеИмя генератораКлючевое слово генератора
'v4'Устаревший генератор MATLAB версии 4.0mcg16807
'v5uniform'Стандартный генератор MATLAB версии 5.0swb2712
'v5normal'Устаревший генератор MATLAB версии 5.0 normalshr3cong

Совет

  • При параллельной обработке rng('shuffle') не должен использоваться, чтобы задать поток случайных чисел для различных работников, чтобы гарантировать независимые потоки, поскольку он затравляет генератор случайных чисел на основе текущего времени. Это особенно верно, когда команда отправляется нескольким рабочим одновременно, таким как внутри parfor задание. Для независимых потоков на рабочих местах используйте поведение по умолчанию или рассмотрите использование уникального подпотока на каждом рабочем RandStream.

  • Как использовать rng вместо rand или randn функции со 'seed', 'state', или 'twister' входы, см. «Замена обескураженных синтаксисов rand и randn».

Расширенные возможности

.
Введенный в R2011a