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