반응형
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 값을 보여준다.
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 수를 생성한다.
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 |
댓글