RandStream.create

Создайте потоки случайных чисел

Класс

RandStream

Синтаксис

[s1,s2,...] = RandStream.create('gentype','NumStreams',n)
s = RandStream.create('gentype')
[ ... ] = RandStream.create('gentype', Name, Value,...)

Описание

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

Примечание

Несколько потоков не поддержаны всеми типами генератора. Используйте или мультипликативный изолированный генератор Фибоначчи (mlfg6331_64) или объединенное несколько рекурсивный генератор (mrg32k3a), чтобы создать несколько потоков.

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

[ ... ] = RandStream.create('gentype', Name, Value,...) позволяет вам задавать дополнительное Имя, пары Значения, чтобы управлять созданием потока. Параметры:

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

Как правило, вы вызываете RandStream.create однажды, чтобы создать несколько независимых потоков в одной передаче. Также можно создать каждый поток от отдельных вызовов до RandStream.create, но необходимо задать соответствующие значения для gentype, 'NumStreams', 'Seed' и 'StreamIndices', чтобы гарантировать их независимость:

  • Задайте то же множество значений для gentype, 'NumStreams' и 'Seed' в каждом случае.

  • Задайте различное значение для 'StreamIndices', который является между 1 и значением 'NumStreams' в каждом случае.

Примеры

Создайте три независимых потока.

[s1,s2,s3] = RandStream.create('mrg32k3a','NumStreams',3);
r1 = rand(s1,100000,1); 
r2 = rand(s2,100000,1); 
r3 = rand(s3,100000,1);
corrcoef([r1,r2,r3])

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

s2 = RandStream.create('mrg32k3a','NumStreams',3,'StreamIndices',2);
RandStream.setGlobalStream(s2);

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

|