Создайте потоки случайных чисел
[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);