exponenta event banner

rng

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

Описание

пример

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

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

пример

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

пример

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

Примеры

свернуть все

Установите генератор случайных чисел в начальное значение по умолчанию (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

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

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.
положительное целое числоИнициализирует генератор с указанным положительным целым начальным числом, например 1.
'default'Инициализирует генератор Mersenne Twister с затравкой 0. Это параметр по умолчанию в начале каждого сеанса MATLAB.
'shuffle'Инициализирует генератор на основе текущего времени, что приводит к различной последовательности случайных чисел после каждого вызова rng.
структураИнициализация генератора на основе параметров, содержащихся в структуре с полями Type, Seed, и State.

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

СтоимостьИмя генератораКлючевое слово генератора
'twister'Мерсенн Твистерmt19937ar
'simdTwister'SIMD-ориентированный быстрый Мерсенн Твистерdsfmt19937
'combRecursive'Комбинированное несколько рекурсивныхmrg32k3a
'multFibonacci'Мультипликативный отставший Фибоначчиmlfg6331_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.0shr3cong

Совет

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

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

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

.
Представлен в R2011a