Main Content

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

각기 다른 난수 생성하기

이 예제에서는 MATLAB®을 다시 시작할 때 동일한 난수 배열이 반복되지 않도록 하는 방법을 보여줍니다. 이 기법은 다른 MATLAB 세션에서 실행된 동일한 난수 명령에서 반환된 결과를 결합하려는 경우 유용합니다.

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

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

각기 다른 난수를 얻는 한 가지 방법은 매번 다른 시드값을 사용하여 생성기를 초기화하는 것입니다. 이렇게 하면 이전 세션에서 생성된 결과를 반복하지 않을 수 있습니다.

임의의 난수 함수를 호출하기 전에 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를 사용할 수 있습니다. 다중 스트림 생성에 대한 자세한 내용은 다중 스트림 항목을 참조하십시오.

참고 항목

관련 항목