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

Определение 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');

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

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

     5     4     2
     8     2     4
     1     1     4

Первый вызов randi измененный состояние генератора. Сохраните настройки генератора после первого вызова randi в структуре s.

s = rng;

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

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

     6     3     7
     5     9     5
     7     1     6

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

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

     6     3     7
     5     9     5
     7     1     6

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

Похожие темы