Main Content

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

rng

난수 생성기 제어

설명

예제

rng(seed)는 MATLAB® 난수 생성기의 시드값을 지정합니다. 예를 들어, rng(1)은 시드값 1을 사용하여 메르센 트위스터 생성기를 초기화합니다.

rng 함수는 전역 스트림을 제어하여 rand, randi, randn, randperm 함수가 일련의 난수를 생성하는 방법을 결정합니다. 전역 스트림과 별도로 하나 이상의 독립 스트림을 만들려면 RandStreamRandStream.create를 참조하십시오.

예제

rng(seed,generator)는 사용할 난수 생성기 유형도 지정합니다. 예를 들어, rng(0,'philox')는 시드값 0을 사용하여 Philox 4x32 난수 생성기를 초기화합니다.

예제

s = rng는 구조체 s에 현재 난수 생성기 설정을 반환합니다.

예제

모두 축소

난수 생성기를 디폴트 시드값(0) 및 알고리즘(메르센 트위스터)으로 설정한 다음 생성기 설정을 저장합니다.

rng('default')
s = rng
s = struct with fields:
     Type: 'twister'
     Seed: 0
    State: [625x1 uint32]

0과 1 사이의 난수 값으로 구성된 1x5 행 벡터로 만듭니다.

x = rand(1,5)
x = 1×5

    0.8147    0.9058    0.1270    0.9134    0.6324

생성기 시드값과 알고리즘을 변경하고 새로운 확률 행 벡터를 만듭니다.

rng(1,'philox')
xnew = rand(1,5)
xnew = 1×5

    0.5361    0.2319    0.7753    0.2390    0.0036

이제 원래 생성기 설정을 복원하고 확률 벡터를 만듭니다. 결과는 디폴트 생성기로 만든 원본 행 벡터 x와 일치합니다.

rng(s)
xold = rand(1,5)
xold = 1×5

    0.8147    0.9058    0.1270    0.9134    0.6324

입력 인수

모두 축소

생성기 초기화로, 다음 옵션 중 하나로 지정됩니다.

설명
0시드값 0을 사용하여 생성기를 초기화합니다.
양의 정수지정된 양의 정수 시드값(예: 1)을 사용하여 생성기를 초기화합니다.
'default'시드값 0을 사용하여 메르센 트위스터 생성기를 초기화합니다. 각 MATLAB 세션 시작 시의 디폴트 설정입니다.
'shuffle'현재 시간을 기준으로 생성기를 초기화하여 rng를 호출할 때마다 다른 순서의 난수를 생성합니다.
구조체Type, SeedState 필드가 있는 구조체에 포함된 설정을 기반으로 생성기를 초기화합니다.

난수 알고리즘으로, 다음 표에 나와 있는 옵션 중 하나로 지정됩니다. 난수 알고리즘에 대한 자세한 내용은 난수 스트림을 만들고 제어하기 항목을 참조하십시오.

생성기 이름생성기 키워드
'twister'메르센 트위스터(Mersenne Twister)mt19937ar
'simdTwister'SIMD 기반 고속 메르센 트위스터(SIMD-Oriented Fast Mersenne Twister)dsfmt19937
'combRecursive'결합 다중 재귀적(Combined Multiple Recursive)mrg32k3a
'multFibonacci'시차 피보나치 수열(Multiplicative Lagged Fibonacci)mlfg6331_64
'philox'10회 라운드의 Philox 4x32 생성기philox4x32_10
'threefry'20회 라운드의 Threefry 4x64 생성기threefry4x64_20

MATLAB 버전 4.0 및 5.0에서 사용되는 레거시 생성기의 경우 다음 옵션 중 하나를 사용합니다.

생성기 이름생성기 키워드
'v4'레거시 MATLAB 버전 4.0 생성기mcg16807
'v5uniform'레거시 MATLAB 버전 5.0 균일 생성기shr3cong
'v5normal'레거시 MATLAB 버전 5.0 일반 생성기swb2712

  • 병렬 처리 시 rng('shuffle')은 현재 시간을 기준으로 난수 생성기의 시드값을 지정하므로 독립 스트림을 보장하기 위해서는 다른 워커에서 이 함수를 사용해 난수 스트림을 설정하지 않아야 합니다. parfor 작업 내부와 같이 동시에 여러 워커에게 명령을 보낼 경우 특히 그렇습니다. 워커에 있는 여러 독립 스트림의 경우 디폴트 동작을 사용하거나 RandStream을 통해 각 워커에 고유한 서브스트림을 사용하는 것이 좋습니다.

  • rand 또는 randn 함수 대신 rng'seed','state' 또는 'twister' 입력값을 사용하려면 권장되지 않는 rand 구문과 randn 구문 대체하기 항목을 참조하십시오.

확장 기능

R2011a에 개발됨