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