이 번역 페이지는 최신 내용을 담고 있지 않습니다. 최신 내용을 영문으로 보려면 여기를 클릭하십시오.
각기 다른 난수 생성하기
이 예제에서는 MATLAB®을 다시 시작할 때 동일한 난수 배열이 반복되지 않도록 하는 방법을 보여줍니다. 이 기법은 다른 MATLAB 세션에서 실행된 동일한 난수 명령에서 반환된 결과를 결합하려는 경우 유용합니다.
rand
, randn
, randi
, randperm
등 모든 난수 함수는 공유 난수 생성기에서 값을 추출합니다. MATLAB을 시작할 때마다 생성기는 스스로 동일한 상태로 재설정됩니다. 따라서, rand(2,2)
와 같은 명령은 시작 후 바로 다음에 실행하는 경우 항상 동일한 결과를 반환합니다. 또한, 난수 함수를 호출하는 모든 스크립트나 함수도 다시 시작할 때마다 동일한 결과를 반환합니다.
각기 다른 난수를 얻는 한 가지 방법은 매번 다른 시드값을 사용하여 생성기를 초기화하는 것입니다. 이렇게 하면 이전 세션에서 생성된 결과를 반복하지 않을 수 있습니다.
임의의 난수 함수를 호출하기 전에 MATLAB 세션에서 rng('shuffle')
명령을 한 번 실행합니다.
rng('shuffle')
MATLAB 명령 창에서 이 명령을 실행할 수 있으며, 다시 시작할 때마다 MATLAB이 실행하는 특수 스크립트인 시작 파일에 이 명령을 추가할 수도 있습니다.
이제, 난수 명령을 실행합니다.
A = rand(2,2);
rng('shuffle')
을 호출할 때마다 이 명령은 현재 시간을 기준으로 다른 시드값을 사용하여 생성기의 시드값을 다시 지정합니다.
참고
자주 생성기의 시드값을 다시 지정해도 출력값의 통계적 특성은 향상되지 않으며, 실제로 출력값의 임의성이 더 높아지지 않습니다. MATLAB을 다시 시작할 때나 난수를 포함하는 대규모 계산을 실행하기 전에 시드값을 다시 지정하는 것은 유용할 수 있습니다. 그러나, 한 세션 내에서 너무 자주 생성기의 시드값을 다시 지정하면 난수의 통계적 특성에 부정적인 영향을 미칠 수 있으므로 좋지 않습니다.
또는 다른 MATLAB 세션에서 다른 시드값을 명시적으로 지정합니다. 예를 들어, 하나의 MATLAB 세션에서 난수를 생성해 보겠습니다.
rng(1); A = rand(2,2);
다른 시드값을 사용하여 또 다른 MATLAB 세션에서 난수를 생성합니다.
rng(2); B = rand(2,2);
생성기는 rand
함수를 호출하기 전에 매번 다른 시드값으로 초기화되므로 배열 A
와 B
는 서로 다릅니다.
서로 겹치지 않도록 보장되고 스트림 간 값의 독립성을 입증하는 테스트가 수행된 다중 독립 스트림을 생성하려면 RandStream.create
를 사용할 수 있습니다. 다중 스트림 생성에 대한 자세한 내용은 다중 스트림 항목을 참조하십시오.