Конструктор RandStream

Поток случайных чисел

Класс

RandStream

Синтаксис

s = RandStream ('gentype')
s = RandStream ('gentype', Имя, Значение)

Описание

s = RandStream('gentype') создает поток случайных чисел, который использует универсальный алгоритм генератора псевдослучайного числа, заданный gentype. RandStream.list возвращает все возможные значения для gentype, или смотрите Выбор Random Number Generator для получения дополнительной информации об алгоритмах генератора.

s = RandStream('gentype',Name,Value) позволяет вам задавать одну или несколько дополнительных пар Name,Value, чтобы управлять созданием потока.

Если вы создали случайное, можно использовать RandStream.setGlobalStream, чтобы сделать его глобальным потоком, так, чтобы функции rand, randi и randn чертили значения от него.

Параметры для RandStream:

ПараметрОписание
SeedНеотрицательное скалярное целое число, с которым можно инициализировать все потоки. Seed должны быть целым числом между 0 и 232  − 1 или 'shuffle', чтобы создать seed на основе текущего времени. Значение по умолчанию 0.
NormalTransformАлгоритм преобразования, используемый randn(s, ...), чтобы сгенерировать нормальные псевдослучайные значения. Возможными значениями является 'Ziggurat', 'Polar' или 'Inversion'.

Примеры

Пример 1

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

s = RandStream('mrg32k3a');
RandStream.setGlobalStream(s);
savedState = s.State;
z1 = randn(1,5)
z1 =
   -0.1894   -1.4426   -0.3592    0.8883   -0.4337
s.State = savedState;
z2 = randn(1,5)
z2 =
   -0.1894   -1.4426   -0.3592    0.8883   -0.4337

z2 содержит точно те же значения как z1.

Пример 2

Возвратите rand, randi и randn к их настройкам запуска по умолчанию:

s = RandStream('mt19937ar','Seed',0)
RandStream.setGlobalStream(s);

Пример 3

Замените текущий глобальный поток случайных чисел на поток, seed которого основан на текущем времени, таким образом, rand, randi и randn возвратят различные значения на различных сеансах MATLAB®. Обычно не желательно сделать это несколько раз на сеанс работы с MATLAB, когда это может влиять на статистические свойства случайных чисел, которые производит MATLAB:

s = RandStream('mt19937ar','Seed','shuffle');
RandStream.setGlobalStream(s);

Советы

  • Потоки, созданные с помощью RandStream, не могут быть независимыми друг от друга. Используйте RandStream.create, чтобы создать несколько потоков, которые независимы.

Была ли эта тема полезной?