RandStream constructor

Поток случайных чисел

Класс

RandStream

Синтаксис

s = RandStream('gentype')
s = RandStream('gentype',Name,Value)

Описание

s = RandStream('gentype') создает поток случайных чисел, который использует универсальный алгоритм генератора псевдослучайного числа, заданный gentypeRandStream.list возвращает все возможные значения для gentype, или смотрите Выбор Random Number Generator для получения дополнительной информации об алгоритмах генератора.

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

Если вы создали случайное, можно использовать RandStream.setGlobalStream сделать его глобальным потоком, так, чтобы функции randrandi, и randn чертите значения от него.

Параметры для RandStream :

ПараметрОписание
SeedНеотрицательное скалярное целое число, с которым можно инициализировать все потоки. Seed должны быть целым числом между 0 и 232  − 1 или 'shuffle' создать seed на основе текущего времени. Значение по умолчанию 0.
NormalTransformАлгоритм преобразования используется randn(s, ...) сгенерировать нормальные псевдослучайные значения. Возможными значениями является 'Ziggurat'полярный, или 'Inversion'.

Примеры

Пример 1

Создайте поток случайных чисел, сделайте его глобальным потоком, и сохраните и восстановите его состояние, чтобы воспроизвести выход 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.

Пример 2

Возвратите randrandi, и randn к их настройкам запуска по умолчанию:

s = RandStream('mt19937ar','Seed',0)
RandStream.setGlobalStream(s);

Пример 3

Замените текущий глобальный поток случайных чисел на поток, seed которого основан на текущем времени, таким образом, randrandi, и randn возвратит различные значения на различных сеансах MATLAB®. Обычно не желательно сделать это несколько раз на сеанс работы с MATLAB, когда это может влиять на статистические свойства случайных чисел, которые производит MATLAB:

s = RandStream('mt19937ar','Seed','shuffle');
RandStream.setGlobalStream(s);

Советы

  • Потоки, созданные с помощью RandStream не может быть независимым друг от друга. Используйте RandStream.create создать несколько потоков, которые независимы.