Сгенерируйте случайные числа, которые повторяемы

Определение Seed

Этот пример показывает, как повторить массивы случайных чисел путем определения seed сначала. Каждый раз, когда вы инициализируете генератор с помощью того же seed, вы всегда получаете тот же результат.

Во-первых, инициализируйте генератор случайных чисел, чтобы сделать результаты в этом примере повторяемыми.

rng('default');

Теперь, инициализируйте генератор с помощью seed 1.

rng(1);

Затем создайте массив случайных чисел.

A = rand(3,3)
A =

    0.4170    0.3023    0.1863
    0.7203    0.1468    0.3456
    0.0001    0.0923    0.3968

Повторите ту же команду.

A = rand(3,3)
A =

    0.5388    0.2045    0.6705
    0.4192    0.8781    0.4173
    0.6852    0.0274    0.5587

Первый вызов rand изменил состояние генератора, таким образом, второй результат отличается.

Теперь, повторно инициализируйте генератор с помощью того же seed как прежде. Затем воспроизведите первую матрицу, A.

rng(1);
A = rand(3,3)
A =

    0.4170    0.3023    0.1863
    0.7203    0.1468    0.3456
    0.0001    0.0923    0.3968

В некоторых ситуациях, устанавливая один только seed не гарантирует те же результаты. Это вызвано тем, что генератор, который функции случайных чисел чертят от силы отличаться, чем вы, ожидает, когда ваш код выполнится. Для долгосрочной воспроизводимости задайте seed и тип генератора вместе.

Например, следующие кодовые наборы seed к 1 и генератор Вихрю Мерсенна.

rng(1,'twister');

Установите seed и тип генератора вместе когда это необходимо к:

  • Гарантируйте, что поведение кода, который вы пишете сегодня, возвращает те же результаты, когда вы запускаете тот код в будущем релизе MATLAB®.

  • Гарантируйте, что поведение кода, который вы написали в предыдущем релизе MATLAB, возвращает те же результаты с помощью текущего релиза.

  • Повторите случайные числа в своем коде после выполнения чужого кода случайных чисел.

Смотрите страницу с описанием rng для списка доступных генераторов.

Сохранение и восстановление настроек генератора

Этот пример показывает, как создать повторяемые массивы случайных чисел путем сохранения и восстановления настроек генератора. Наиболее распространенная причина сохранить и восстановить настройки генератора состоит в том, чтобы воспроизвести случайные числа, сгенерированные в отдельном моменте в алгоритме или итерации. Например, можно использовать настройки генератора в качестве помощи в отладке.

Во-первых, инициализируйте генератор случайных чисел, чтобы сделать результаты в этом примере повторяемыми.

rng(1,'twister');

Сохраните настройки генератора в структуре s.

s = rng;

Создайте массив случайных целочисленных значений между 1 и 10.

A = randi(10,3,3)
A = 3×3

     5     4     2
     8     2     4
     1     1     4

Повторите ту же команду.

A = randi(10,3,3)
A = 3×3

     6     3     7
     5     9     5
     7     1     6

Первый вызов randi изменил состояние генератора, таким образом, второй результат отличается.

Теперь, возвратите генератор в исходное состояние, сохраненное в s, и воспроизведите первый массив A.

rng(s);
A = randi(10,3,3)
A = 3×3

     5     4     2
     8     2     4
     1     1     4

В отличие от пересева, который повторно инициализирует генератор, этот подход позволяет вам сохранять и восстанавливать настройки генератора в любой точке.

Смотрите также

Связанные примеры

Больше о

Была ли эта тема полезной?