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

Задайте Seed

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

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

rng('default');

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

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

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

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

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

См. также

Похожие темы