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