Поток случайных чисел
s = RandStream('gentype')
s = RandStream('gentype',Name,Value)
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' полярный , или 'Inversion' . |
Создайте поток случайных чисел, сделайте его глобальным потоком, и сохраните и восстановите его состояние, чтобы воспроизвести выход 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
.
Возвратите rand
randi
, и randn
к их настройкам запуска по умолчанию:
s = RandStream('mt19937ar','Seed',0) RandStream.setGlobalStream(s);
Замените текущий глобальный поток случайных чисел на поток, seed которого основан на текущем времени, таким образом, rand
randi
, и randn
возвратит различные значения на различных сеансах MATLAB®. Обычно не желательно сделать это несколько раз на сеанс работы с MATLAB, когда это может влиять на статистические свойства случайных чисел, которые производит MATLAB:
s = RandStream('mt19937ar','Seed','shuffle'); RandStream.setGlobalStream(s);
Потоки, созданные с помощью RandStream
не может быть независимым друг от друга. Используйте RandStream.create
создать несколько потоков, которые независимы.