Main Content

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

randn

정규분포된 난수

설명

X = randn은 표준 정규분포에서 추출한 난수 스칼라를 반환합니다.

예제

X = randn(n)은 정규분포된 난수로 구성된 n×n 행렬을 반환합니다.

예제

X = randn(sz1,...,szN)은 난수로 구성된 sz1×...×szN 배열을 반환합니다. 여기서 sz1,...,szN은 각 차원의 크기를 나타냅니다. 예를 들어, randn(3,4)는 3×4 행렬을 반환합니다.

예제

X = randn(sz)는 난수로 구성된 배열을 반환합니다. 여기서 크기 벡터 szsize(X)를 정의합니다. 예를 들어, randn([3 4])는 3×4 행렬을 반환합니다.

예제

X = randn(___,typename)은 데이터형이 typename인 난수로 구성된 배열을 반환합니다. typename 입력값은 "single" 또는 "double"이 될 수 있습니다. 위에 열거된 구문의 모든 입력 인수와 사용할 수 있습니다.

예제

X = randn(___,"like",p)p와 유사한, 즉 데이터형, 실수/복소수 여부가 p와 동일한 난수로 구성된 배열을 반환합니다. typename이나 "like" 중 하나를 지정할 수 있으나, 둘 다 지정할 수는 없습니다.

X = randn(s,___)는 디폴트 전역 스트림 대신 난수 스트림 s에서 숫자를 생성합니다. 스트림을 만들려면 RandStream 함수를 사용하십시오. s를 지정하고 뒤이어 위에 열거된 구문에 나와 있는 입력 인수 조합을 지정할 수 있습니다.

예제

모두 축소

정규분포된 난수로 구성된 5×5 행렬을 생성합니다.

r = randn(5)
r = 5×5

    0.5377   -1.3077   -1.3499   -0.2050    0.6715
    1.8339   -0.4336    3.0349   -0.1241   -1.2075
   -2.2588    0.3426    0.7254    1.4897    0.7172
    0.8622    3.5784   -0.0631    1.4090    1.6302
    0.3188    2.7694    0.7147    1.4172    0.4889

지정된 평균 벡터와 공분산 행렬을 사용하여 이변량 정규분포의 값을 생성합니다.

mu = [1 2];
sigma = [1 0.5; 0.5 2];
R = chol(sigma);
z = repmat(mu,10,1) + randn(10,2)*R
z = 10×2

    1.5377    0.4831
    2.8339    6.9318
   -1.2588    1.8302
    1.8622    2.3477
    1.3188    3.1049
   -0.3077    1.0750
    0.5664    1.6190
    1.3426    4.1420
    4.5784    5.6532
    3.7694    5.2595

난수 생성기의 현재 상태를 저장하고 난수로 구성된 1×5 벡터를 생성합니다.

s = rng;
r = randn(1,5)
r = 1×5

    0.5377    1.8339   -2.2588    0.8622    0.3188

난수 생성기의 상태를 s로 복원한 다음, 난수로 구성된 1×5 벡터를 새로 생성합니다. 값은 이전과 동일합니다.

rng(s);
r1 = randn(1,5)
r1 = 1×5

    0.5377    1.8339   -2.2588    0.8622    0.3188

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

X = randn([3,2,3])
X = 
X(:,:,1) =

    0.5377    0.8622
    1.8339    0.3188
   -2.2588   -1.3077


X(:,:,2) =

   -0.4336    2.7694
    0.3426   -1.3499
    3.5784    3.0349


X(:,:,3) =

    0.7254   -0.2050
   -0.0631   -0.1241
    0.7147    1.4897

단정밀도 요소를 갖는 난수로 구성된 1×4 벡터를 만듭니다.

r = randn(1,4,"single")
r = 1x4 single row vector

    0.5377    1.8339   -2.2588    0.8622

class(r)
ans = 
'single'

기존 배열과 동일한 크기의, 정규분포된 난수로 구성된 행렬을 만듭니다.

A = [3 2; -2 1];
sz = size(A);
X = randn(sz)
X = 2×2

    0.5377   -2.2588
    1.8339    0.8622

앞의 두 줄의 코드는 다음과 같이 한 줄로 표현하는 것이 보통입니다.

X = randn(size(A));

단정밀도 난수로 구성된 2×2 행렬을 만듭니다.

p = single([3 2; -2 1]);

p와 크기, 데이터형이 동일한, 난수로 구성된 배열을 만듭니다.

X = randn(size(p),"like",p)
X = 2x2 single matrix

    0.5377   -2.2588
    1.8339    0.8622

class(X)
ans = 
'single'

표준 복소수 정규분포에서 복소수형 난수 10개를 생성합니다.

a = randn(10,1,"like",1i)
a = 10×1 complex

   0.3802 + 1.2968i
  -1.5972 + 0.6096i
   0.2254 - 0.9247i
  -0.3066 + 0.2423i
   2.5303 + 1.9583i
  -0.9545 + 2.1460i
   0.5129 - 0.0446i
   0.5054 - 0.1449i
  -0.0878 + 1.0534i
   0.9963 + 1.0021i

기본적으로 randn(n,"like",1i)는 표준 복소수 정규분포에서 난수를 생성합니다. 실수부와 허수부는 평균이 0이고 공분산이 1/2인, 독립적으로 정규분포된 확률 변수입니다. 공분산 행렬은 [1/2 0; 0 1/2] 형식입니다.

z = randn(50000,1,"like",1i);
cov_z = cov(real(z),imag(z),1)
cov_z = 2×2

    0.4980    0.0007
    0.0007    0.4957

보다 일반적인 복소수 정규분포를 지정하기 위해 평균과 공분산 행렬을 정의합니다. 예를 들면 평균을 μ=1+2i, 공분산 행렬을 σ=[σxxσxyσyxσyy]=[2-2-24]로 지정합니다.

mu = 1 + 2i;
sigma = [2 -2; -2 4];

새로 정의된 복소수 정규분포를 따르도록 이전에 생성한 데이터를 변환합니다. 원래 분포에서 실수부와 허수부의 분산이 1/2이므로 데이터를 스케일링할 때 sqrt(2) 인자를 포함합니다.

R = chol(sigma);
z_comp = [real(z) imag(z)];
z = repmat(mu,50000,1) + z_comp*sqrt(2)*R*[1; 1i];
z(1:10)
ans = 10×1 complex

   1.7604 + 3.8331i
  -2.1945 + 6.4138i
   1.4508 - 0.3002i
   0.3868 + 3.0977i
   6.0606 + 0.8560i
  -0.9090 + 8.2011i
   2.0259 + 0.8850i
   2.0108 + 0.6993i
   0.8244 + 4.2823i
   2.9927 + 2.0115i

입력 인수

모두 축소

정사각 행렬의 크기로, 정수 값으로 지정됩니다.

  • n0이면 X는 빈 행렬이 됩니다.

  • n이 음수이면 0으로 처리됩니다.

데이터형: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

각 차원의 크기로, 정수 값으로 구성된 개별 인수로 지정됩니다.

  • 크기가 0인 차원이 있을 경우 X는 빈 배열이 됩니다.

  • 크기가 음수인 차원이 있을 경우 0으로 처리됩니다.

  • randn은 세 번째 차원부터는 크기가 1인 차원을 무시합니다. 예를 들어, randn(3,1,1,1)은 난수로 구성된 3×1 벡터를 생성합니다.

데이터형: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

각 차원의 크기로, 정수 값으로 구성된 행 벡터로 지정됩니다. 이 벡터의 요소는 각각 해당하는 차원의 크기를 나타냅니다.

  • 크기가 0인 차원이 있을 경우 X는 빈 배열이 됩니다.

  • 크기가 음수인 차원이 있을 경우 0으로 처리됩니다.

  • randn은 세 번째 차원부터는 크기가 1인 차원을 무시합니다. 예를 들어, randn([3 1 1 1])은 난수로 구성된 3×1 벡터를 생성합니다.

예: sz = [2 3 4]는 2×3×4 배열을 생성합니다.

데이터형: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

생성할 데이터형(클래스)으로, "double", "single", 또는 randn을 지원하는 다른 클래스의 이름으로 지정됩니다.

예: randn(5,"single")

생성할 배열의 프로토타입으로, 숫자형 배열로 지정됩니다.

예: randn(5,"like",p)

데이터형: single | double
복소수 지원 여부:

난수 스트림으로, RandStream 객체로 지정됩니다.

예: s = RandStream("dsfmt19937"); randn(s,[3 1])

세부 정보

모두 축소

표준 실수 및 표준 복소수 정규분포

실수형 난수를 생성할 때 randn 함수는 다음과 같이 표준 정규분포를 따르는 데이터를 생성합니다.

f(x)=12πex2/2.

여기서 x는 평균이 0이고 분산이 1인 실수형 난수 변수입니다.

명령 randn(...,"like",1i)를 사용하는 등 복소수형 난수를 생성할 때 randn 함수는 다음과 같이 표준 복소수 정규분포를 따르는 데이터를 생성합니다.

f(z)=1πe|z|2.

여기서 z는 실수부와 허수부가 평균이 0이고 분산이 1/2인 독립적으로 정규분포된 확률 변수인 복소수형 난수 변수입니다.

  • randn이 생성하는 수열은 rand, randi, randn의 기반이 되는 균일 의사 난수 생성기의 내부 설정에 의해 결정됩니다. rng를 사용하여 이 공유 난수 생성기를 제어할 수 있습니다.

확장 기능

버전 내역

R2006a 이전에 개발됨

모두 확장