반복 가능한 난수 생성하기
시드값 지정하기
이 예제에서는 먼저 시드값을 지정하여 난수로 구성된 배열을 반복하는 방법을 보여줍니다. 같은 시드값을 사용하여 생성기를 초기화할 때마다 항상 동일한 결과가 생성됩니다.
먼저, 이 예제의 결과가 반복되도록 하기 위해 난수 생성기를 초기화합니다.
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
로 설정하고 생성기를 메르센 트위스터(Mersenne Twister)로 설정합니다.
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