본문 바로가기
Major/Programming

[Matlab] Random number function (랜덤함수)

by 알 수 없는 사용자 2010. 2. 10.
반응형

출처 : http://5486.pe.kr/tc/143


1. 균등 랜덤 수 (Uniform Random Number)
MATLAB의 rand 명령어는 0과 1사이에서 무작위의 숫자를 생성한다. 이 random 숫자는 [0, 1]사이에서 균일하게 분포될 수 있으며, 평균은 0의 값을 갖고 분산은 1을 갖는 Gaussian random 숫자를 발생한다.

rand(n)                n행 n열의 행렬로 이루어진 random 수를 생성한다.
rand(m, n)            m-by-n 행렬의 크기를 갖는 random 수를 생성한다.
rand('seed', n)     seed 값을 n으로 설정한다. n의 초기값은 0이다.
rand('seed')         현재의 seed 값을 보여준다.


랜덤 수는 density 함수로 특성지을 수 있다. 이 함수는 히스토그램과 매우 유사하다.

만약 같은 seed 값을 사용한다면 매번 생성되는 랜덤 수는 항상 동일 한 값을 갖는다.

rand 명령어는 항상 [0,1]의 범위에 있는 랜덤 수를 생성한다. 그 범위를 [a, b]로 바꾸고 싶다면 다음과 같이 사용한다.
=>  a + (b-a)*rand(m,n)



2. 가우스(정규) 랜덤 수 (Gaussian(Normally Distrubuted) Random Numbers)

randn(n)              n행 n열의 행렬로 평균이 0이고 분산이 1.0인 가우스(정규) random 수를 생성한다.
randn(m, n)          m-by-n 행렬로 편균이 0이고 분산이 1.0인 가우스(정규) random 수를 생성한다.

만약 표준편차가 a이고 평균이 b인 새로운 랜던 수를 생성하고 싶다면 다음과 같이 사용한다.
=>  b + a*randn(m,n) 



참고자료)

Pseudo Random Number와 seed
     
아무리 좋은 algorithm을 사용해 난수열을 만들더라도, 언제 주기가 생기거나 또는 난수 자체가 반복하여 나타나거나, 특정한 부분 구간에 난수가 많이 모인다든지 하는 현상이 발생할 지 모른다. 이러한 의미에서 우리가 만든 난수열을 의사 난수(pseudo random number)열이라 부른다.
같은 난수 발생 algorithm을 반복해서 사용할 때, 나타나는 난수열은 seed(즉 난수열을 만들 때 도입하는 처음의 수)가 같으면 항상 같은 난수열이 만들어 진다. 따라서 어떤 난수열을 이용해 simulation을 할 때, 이 simulation을 반복해서 평균하여 결과를 얻는다면, 반복할 때 마다, 항상 다른 seed에서 출발한 난수열을 사용하는 것이 좋다. 이러한 의미에서 seed를 흔히 simulation을 시작하는 시각을 초단위로 환산하여 사용하곤 한다.




반응형

'Major > Programming' 카테고리의 다른 글

Maple, Mathematica Tutorial  (0) 2010.06.25
확률분포함수 구현하기  (0) 2010.02.25
효율적인 Matlab programming  (0) 2009.08.26
Fortran tutorial  (0) 2008.06.15
Ultraedit에서 c언어 파일 컴파일 돌리는방법  (0) 2008.06.15

댓글