rng

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

Описание

пример

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

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

пример

rng(seed,generator) также задает тип генератора случайных чисел, чтобы использовать. Например, rng(0,'philox') инициализирует Philox 4x32 случайный генератор с seed 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Инициализирует генератор seed 0.
положительное целое числоИнициализирует генератор заданным положительным целочисленным seed, таким как 1.
'default'Инициализирует Генератор случайных чисел Вихрь Мерсенна seed 0. Это - настройка по умолчанию в начале каждого сеанса работы с MATLAB.
'shuffle'Инициализирует генератор на основе текущего времени, приводящего к различной последовательности случайных чисел после каждого вызова rng.
структураИнициализирует генератор на основе настроек, содержавшихся в структуре с полями Type, Seed, и State.

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

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

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

ЗначениеИмя генератораКлючевое слово генератора
'v4'Устаревший генератор версии 4.0 MATLABmcg16807
'v5uniform'Устаревший универсальный генератор версии 5.0 MATLABswb2712
'v5normal'Устаревшая версия 5.0 MATLAB нормальный генераторshr3cong

Советы

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

  • Когда вы выполняете параллельную обработку, генераторы случайных чисел по умолчанию на клиенте MATLAB и работниках MATLAB отличаются. Если необходимо сгенерировать тот же случайный поток чисел на клиенте и рабочих, можно использовать rng с тем же типом генератора и seed (или рассмотреть использование RandStream с тем же типом генератора, seed и нормальным алгоритмом преобразования). Для получения дополнительной информации смотрите Потоки Управления Случайных чисел на Рабочих (Parallel Computing Toolbox).

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

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

Введенный в R2011a