Поток случайных чисел
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' . |
Создайте поток случайных чисел, сделайте его глобальным потоком, и сохраните и восстановите его состояние, чтобы воспроизвести вывод 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
, чтобы создать несколько потоков, которые независимы.
RandStream
| RandStream.create
| RandStream.getGlobalStream
| RandStream.list
| RandStream. rand
| RandStream. randi
| RandStream. randn
| RandStream.setGlobalStream
| rng