Wednesday, December 06, 2006
자바스크립트] 정규분포(가우스 분포) 난수(랜덤) 발생 함수; JavaScript Gauss Random
자바스크립트로 정규 분포(Gaussian Distribution)의 난수(랜덤 숫자)를 생성하는 함수입니다.
다음 예제는 가우스 분포의 난수 20개를 웹브라우저 화면에 출력합니다:
파일명: 0.html
※ 아래 박스 클릭 후, 키보드 화살표 키로 좌우 스크롤 가능함
위의 소스 아래쪽의
function gaussianRandom() {...
이라는 함수가 가우스 난수를 생성하는 함수입니다.
평균=0
표준 편차=1
입니다.
브라우저 실행 결과의 예:
다른 언어로 정규분포 난수 구하기: ▶▶ 가우시안/가우스 랜덤/정규 분포 난수 구하기 함수 예제; C-자바-Perl-VBA; Gauss Random
다음 예제는 가우스 분포의 난수 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>
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
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
tag: html
HTML | CSS | 자바스크립트 JavaScript
감사합니다. 도움이 되었습니다. ^^
제가 하려고 했던 것은 1~5까지 숫자를 100번 반복해서 랜덤하게 1~5까지 임의수를 뽑는 것입니다. 하지만 1은 2%, 2는 30%, 3은24%식의 비율을 갖는 것이었습니다. 중복되지 않는 랜덤수를 갖는다면 쉽게 해결이 되는 문제였습니다. 즉, 1~100까지 중복되지 않게 랜덤수를 뽑아서 2%는 1,2의 수가 나오면 1에 해당시키는 것입니다. 흔히 카드패 섞기에 쓰이는 방법이더군요.
검색을 하다보니 이곳 블로그에 여러 랭귀지로 구현된 것을 보았습니다.
어쩌면 그렇게 여러 랭귀지를 섭렵하시고 수학적인 문제를 접근하시는지 대단하십니다. 종종 이곳 블로그에 올 것 같습니다. ^^ 감사합니다.
별말씀을요. 도움이 되셨다니 다행입니다. 사실 제가 난수 분야에 대해 잘 모르고, 기초적인 소스를 올린 것뿐입니다^^
<< Home