mwultong Blog ... 프로그래밍 / 계산기

컴퓨터 엑셀 워드 포토샵 구글어스 WINDOWS JAVASCRIPT JAVA C++

 
Tuesday, April 17, 2007

매스매티카 Mathematica, 정규분포, 가우스 분포 랜덤 난수 발생 함수; Normal Distribution


Random[] 함수는 기본적으로 균일분포(Uniform Distribution)의 난수를 만듭니다. 즉, 모든 수가 같은 확률로 나옵니다.

종 모양의 커브를 가진 정규분포(Normal Distribution) 즉, 가우스 분포(Gaussian Distribution)의 랜덤한 난수를 생성하려면 다음의 방법을 사용합니다.


우선
Needs["Statistics`ContinuousDistributions`"]
이렇게 외부 패키지를 로드해야 합니다. (주의! 위에서 ` 이런 문자는 작은따옴표가 아니라 백틱이라는 글자입니다. 키보드 맨 좌측의 숫자1 왼쪽에 있음)

업데이트: 매스매티카 6 버전부터는 위의 Needs... 부분을 해주지 않아도 됩니다.


그런 후
Random[NormalDistribution[0, 1]]
노트북에 이렇게 입력하면,

-0.912615
0.47302
-1.06941
...

이렇게 가우스 분포의 난수들이, 실행할 때마다 하나씩 출력됩니다.

위의 경우는, 평균 0, 표준편차 1인 "표준 정규 분포(Standard Normal Distribution)"입니다.

Random[NormalDistribution[평균, 표준편차]]


만약 난수가 출력되지 않고 에러가 나면, Quit 명령으로 커널을 종료한 후, 다시 시작해 보면 됩니다.



가우스 분포 난수 여러개 출력


위의 경우는 1개씩만 출력되지만 다음의 방법으로 여러 개의 난수를 한꺼번에 출력할 수 있습니다.

이렇게 하면
Table[Random[NormalDistribution[0, 1]], {dummy, 10}]


다음과 같이 난수 10개의 리스트가 구해집니다:
{1.22369, 1.15969, 0.762988, 1.01525, -0.755382, -0.431415, -0.483239, \
-0.779892, -0.37497, 0.384343}



For[loop = 1, loop <= 10, Print[Random[NormalDistribution[0, 1]]], loop++]

이렇게 For문과 Print문을 사용하면, 한줄에 1개씩 여러개를 출력할 수 있습니다.

-0.512401
-0.833949
-0.802558
-0.107209
-0.516309
-0.144341
1.86592
0.95577
-1.03586
-0.299246




정규 분포 난수 1000개 만들어서 텍스트 파일로 저장


For[loop = 1, loop <= 1000, PutAppend[Random[NormalDistribution[0, 1]], "out.txt"], loop++]

위의 명령을 실행하면, 윈도우 버전의 경우
C:\Program Files\Wolfram Research\Mathematica
이 디렉토리에, out.txt 라는 파일이 생성되고 그 안에

-0.33857762671747393
0.6920962105652984
0.5195675827624799
-1.191398935434942
1.4780321429381365
-1.1728516156568887
-0.979706363238176
0.4672276453186511
-0.1828834882009104
0.3193399586767873
...

이런 난수들이 1000개 들어 있을 것입니다.

위의 수식을 다시 실행하려면 하드에 생성된 out.txt 파일을 지우는 것이 좋습니다. PutAppend 는 "out.txt" 에 계속 이어서 쓰기 때문에, 위의 코드를 한번 더 실행시키면 out.txt에는 난수 2000개가 들어갑니다.



▶▶ 매스매티카 Mathematica] 랜덤 난수 출력 함수, 정수 실수; Random Rand Rnd

▶▶ 가우시안/가우스 랜덤/정규 분포 난수 구하기 함수 예제; C-자바-Perl-VBA; Gauss Random

▶▶ 매스매티카] 표준편차, 분산 구하기 함수; Mathematica Standard Deviation, Variance




tag: mathematica
매스매티카 Mathematica | 수학 Math

0 Comments:

<< Home RSS 2.0 feed

구글 Google 에서 제공하는 무료 블로그 서비스인 블로거 Blogger 의 인터넷 주소는 www.blogger.com 입니다. Blogger 에 블로그를 만들면, blogspot.com 이라는 주소에 블로그가 생성됩니다.
블로그를 직접 방문하지 않고도 최신 게시물을 구독하려면 RSS 2.0 feed 주소를 리더기에 등록하시면 됩니다.
Previous Posts
Monthly Archives
Top