exponenta event banner

Создание повторяющихся случайных чисел

Укажите начальное значение

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

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

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

Теперь выполните повторную инициализацию генератора с использованием того же начального значения, что и раньше. Затем воспроизвести первую матрицу, 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

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

Например, следующий код устанавливает начальное значение в 1 и генератор Мерсенну Твистеру.

rng(1,'twister');

Если необходимо:

  • Убедитесь, что поведение кода, который вы пишете сегодня, возвращает те же результаты при запуске этого кода в следующей версии 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

См. также

Связанные темы