Main Content

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

각기 다른 난수 생성하기

이 예제에서는 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 함수를 호출하기 전에 매번 다른 시드값으로 초기화되므로 배열 AB는 서로 다릅니다.

서로 겹치지 않도록 보장되고 스트림 간 값의 독립성을 입증하는 테스트가 수행된 다중 독립 스트림을 생성하려면 RandStream.create를 사용할 수 있습니다. 다중 스트림 생성에 대한 자세한 내용은 다중 스트림 항목을 참조하십시오.

참고 항목

관련 항목