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

 
Wednesday, December 06, 2006

자바스크립트] 정규분포(가우스 분포) 난수(랜덤) 발생 함수; JavaScript Gauss Random


자바스크립트로 정규 분포(Gaussian Distribution)의 난수(랜덤 숫자)를 생성하는 함수입니다.

다음 예제는 가우스 분포의 난수 20개를 웹브라우저 화면에 출력합니다:

가우시안(정규분포) 난수 생성 예제; Gaussian Random Example


파일명: 0.html
<script type="text/javascript">

  for (var i = 1; i <= 20; i++)
    document.write(gaussianRandom() + '<br />');




function gaussianRandom() {
  var v1, v2, s;

  do {
    v1 = 2 * Math.random() - 1;   // -1.0 ~ 1.0 까지의 값
    v2 = 2 * Math.random() - 1;   // -1.0 ~ 1.0 까지의 값
    s = v1 * v1 + v2 * v2;
  } while (s >= 1 || s == 0);

  s = Math.sqrt( (-2 * Math.log(s)) / s );

  return v1 * s;
}

</script>


위의 소스 아래쪽의
function gaussianRandom() {...
이라는 함수가 가우스 난수를 생성하는 함수입니다.
평균=0
표준 편차=1
입니다.


브라우저 실행 결과의 예:
0.2623439566534113
1.3810254116019618
-0.8136771876983261
-0.20366430360098836
3.2163926646302703
0.3139233328539567
-1.17914500407413
1.086101644554995
-0.13209766013962806
0.8153106871584829
-1.8509459565458212
-1.2243435112992962
-0.29154406178138375
0.5551525500271025
1.4554308182077955
0.35393450370528056
-0.9573898442135393
-2.134580383089069
-1.5629926879403062
-1.6152982957089618




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

☞ HTML/CSS/자바스크립트(JavaScript)

2 Comments:
At March 23, 2008 at 2:58 AM, Anonymous Anonymous said...

감사합니다. 도움이 되었습니다. ^^
제가 하려고 했던 것은 1~5까지 숫자를 100번 반복해서 랜덤하게 1~5까지 임의수를 뽑는 것입니다. 하지만 1은 2%, 2는 30%, 3은24%식의 비율을 갖는 것이었습니다. 중복되지 않는 랜덤수를 갖는다면 쉽게 해결이 되는 문제였습니다. 즉, 1~100까지 중복되지 않게 랜덤수를 뽑아서 2%는 1,2의 수가 나오면 1에 해당시키는 것입니다. 흔히 카드패 섞기에 쓰이는 방법이더군요.
검색을 하다보니 이곳 블로그에 여러 랭귀지로 구현된 것을 보았습니다.
어쩌면 그렇게 여러 랭귀지를 섭렵하시고 수학적인 문제를 접근하시는지 대단하십니다. 종종 이곳 블로그에 올 것 같습니다. ^^ 감사합니다.

 
At March 23, 2008 at 10:33 AM, Blogger mwultong said...

별말씀을요. 도움이 되셨다니 다행입니다. 사실 제가 난수 분야에 대해 잘 모르고, 기초적인 소스를 올린 것뿐입니다^^

 

Post a Comment

<< Home RSS 2.0 feed

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