이 페이지의 최신 내용은 아직 번역되지 않았습니다. 최신 내용은 영문으로 볼 수 있습니다.

반복 가능한 난수 생성하기

시드값 지정하기

이 예제에서는 먼저 시드값을 지정하여 난수로 구성된 배열을 반복하는 방법을 보여줍니다. 같은 시드값을 사용하여 생성기를 초기화할 때마다 항상 동일한 결과가 생성됩니다.

먼저, 이 예제의 결과가 반복되도록 하기 위해 난수 생성기를 초기화합니다.

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');

생성기 설정을 구조체 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

시드값을 다시 지정하여 생성기를 다시 초기화하는 것과 달리, 이 방법을 사용하면 언제든지 생성기 설정을 저장하고 복원할 수 있습니다.

참고 항목

관련 예제

세부 정보