Main Content

이 번역 페이지는 최신 내용을 담고 있지 않습니다. 최신 내용을 영문으로 보려면 여기를 클릭하십시오.

시작 후 난수가 반복되는 이유

rand, randn, randi, randperm 등 모든 난수 함수는 공유 난수 생성기에서 값을 추출합니다. MATLAB®을 시작할 때마다 생성기는 디폴트 알고리즘과 시드값을 사용하여 스스로 동일한 상태로 재설정됩니다. 따라서, 난수 생성기에 대한 기본 설정이 동일한 다른 MATLAB 세션을 시작한 직후에 rand(2,2)와 같은 명령을 실행할 경우 항상 동일한 결과가 반환됩니다. 또한, 난수 함수를 호출하는 모든 스크립트나 함수도 다시 시작할 때마다 동일한 결과를 반환합니다.

처음 MATLAB 세션을 시작하거나 rng("default")를 호출하면 MATLAB은 디폴트 알고리즘과 시드값을 사용해서 난수 생성기를 초기화합니다. R2023b부터는 MATLAB 기본 설정에서 디폴트 알고리즘과 시드값을 설정할 수 있습니다. 이 기본 설정을 변경하지 않으면 rng는 이전 릴리스에서처럼 공장 출하값 "twister"(시드값이 0인 메르센 트위스터 생성기)를 사용합니다. 자세한 내용은 난수 생성기의 디폴트 설정난수 생성기의 재현성 항목을 참조하십시오.

  • MATLAB을 다시 시작할 때 동일한 난수 배열이 반복되지 않도록 하려면 rand, randn, randi 또는 randperm을 호출하기 전에 rng("shuffle")을 사용합니다. 이 명령을 실행하면 이전 MATLAB 세션의 결과를 반복하지 않을 수 있습니다.

  • 다시 시작하지 않고 MATLAB 세션이 시작될 때 얻은 결과를 반복하려면 rng("default")를 사용하여 생성기의 상태를 바꾸어 난수 생성을 처음부터 다시 시작하도록 설정할 수 있습니다.

rng("default")를 실행하면 그 다음 난수 명령이 난수 생성기에 동일한 디폴트 알고리즘과 시드값을 사용하는 다른 MATLAB 세션의 출력값과 일치하는 결과를 반환합니다.

rng("default");
A = rand(2,2)
A =

    0.8147    0.1270
    0.9058    0.9134
A의 값은 난수 생성기에 같은 기본 설정을 사용하여 MATLAB을 다시 시작할 때마다 rand(2,2)의 출력값과 일치합니다.

또는 난수 생성기에 사용되는 시드값과 알고리즘을 지정하여 결과를 반복할 수 있습니다. 예를 들어, 시드값을 1로 설정하고 생성기 알고리즘을 메르센 트위스터(Mersenne Twister)로 설정합니다.

rng(1,"twister");

난수로 구성된 배열을 만듭니다.

A = rand(2,2)
A =

    0.4170    0.0001
    0.7203    0.3023

다음으로 새로운 MATLAB 세션에서 같은 명령을 반복하여 배열 A를 다시 생성합니다.

rng(1,"twister");
A = rand(2,2)
A =

    0.4170    0.0001
    0.7203    0.3023

참고 항목