Saturday, January 19, 2008
정규분포 난수, 가우시안 랜덤 발생기; Normal Distribution Rand Generator
정규분포(Normal Distribution) 즉 가우스 분포(Gaussian Distribution)의 랜덤한 난수들을 생성하는 발생기입니다. 난수들의 평균과 표준편차를 지정할 수도 있습니다. 기본값인 "평균 0.0", "표준편차 1.0" 으로 발생시키면 "표준정규분포(Standard Normal Distribution)"의 난수들이 구해집니다.
주의: 이것은 모든 숫자들이 균일한 확률로 나오는 난수 즉 Uniformly Distributed Random Numbers 가 아니라, Gaussian-Distributed Numbers 입니다. 따라서 여기서의 정규분포 난수는, 평균에 가까운 값일수록 더 빈번히 나오고, 평균에서 먼 값일수록 덜 나오며, 그래프를 그려 보면 종 모양의 부드러운 곡선(Bell Curve)을 이룹니다. 다시 말하자면, 특정 값이 더 많이 나오는 특수한 난수입니다.
주의: 이것은 모든 숫자들이 균일한 확률로 나오는 난수 즉 Uniformly Distributed Random Numbers 가 아니라, Gaussian-Distributed Numbers 입니다. 따라서 여기서의 정규분포 난수는, 평균에 가까운 값일수록 더 빈번히 나오고, 평균에서 먼 값일수록 덜 나오며, 그래프를 그려 보면 종 모양의 부드러운 곡선(Bell Curve)을 이룹니다. 다시 말하자면, 특정 값이 더 많이 나오는 특수한 난수입니다.
가우시안 난수를,
소수점 이하 자리(Digits)로, 개 생성
평균(mean; μ) :
표준편차(standard deviation; σ):
난수 개수를 2000개 이상 지정하면, 확인 대화상자
소수점 이하 자리(Digits)로, 개 생성
평균(mean; μ) :
표준편차(standard deviation; σ):
난수 개수를 2000개 이상 지정하면, 확인 대화상자
무작위의 난수이기에, 위에서 지정한 평균과 표준편차에 정확히 일치하지는 않고 근접할 뿐입니다. 많은 개수(수천 개 이상)의 난수를 구할수록, 지정한 평균과 표준편차에 보다 가까워집니다.
정수(Integer)로 된 정규분포 난수들을 얻으려면, 소수점 이하의 자릿수를 0으로 지정하면 됩니다.
정수(Integer)로 된 정규분포 난수들을 얻으려면, 소수점 이하의 자릿수를 0으로 지정하면 됩니다.
모든 수가 균일하게 나오는 일반 난수 구하기: ▶▶ 실수 난수 발생기; 소수점 랜덤 숫자 생성기, 지정 범위 내에서; Float Random Number Generator
표준편차 계산기: ▶▶ 평균 계산기, 합계 구하기, 표준편차 계산기, 중앙값; Sum Average Stdev Median Calc
tag: calc
각종 온라인 계산기 Calculator | 변환기 컨버터 Converter
안녕하세요. 균일한 난수를 생각하다가 이곳을 보게 되었습니다.
1~30까지 수를 100회 랜덤값을 발생시킬 경우 1~30까지의 수가 균일하게 생성 할 수 있을까요? 보통 1000번 이상의 랜덤값을 갖어야 분포가 비슷해지는 것을 알수 있었습니다.
또 한가지 1~5까지의 임의수를 갖는 함수에서 각각의 수에 가중치를 주어서 특정수가 더 나오게 할 수 있을까요? 예를 들자면 1은 20%, 2는 90%의 가중치를 갖습니다.
마지막으로, 가우시안 랜덤 발생기 소스를 좀 구할 있을까요? 소스를 분석해 보면 도움이 될수 있을것 같습니다. eseog@hotmail.com 으로 연락 주시면 감사하겠습니다.
난수를 많이 구할수록 고르게 분포되거나, 예상에 가까운 결과가 나옵니다. 난수를 적은 개수로 구하면 구할수록 예상하기 어려운 분포가 나옵니다.
예를 들어 주사위를 여섯 번 던진다면 1 이 여섯 번 나올 수도 있지만, 주사위를 1억번 던진다면 1에서 6까지의 숫자들이 고르게 분포되어 나올 것입니다.
난수를 강제적으로 균일하게 생성하는 방법은, 그 난수들의 분포를 통계내어서 자주 나오는 숫자는 제외시켜 준다든지 하는 식으로 별도로 처리해야 할 것입니다.
특정 수에 가중치를 주는 것도, 우선 난수를 만들어서, 특정 난수들이 많이 나오도록 조작하는 과정을 거쳐야 합니다. 그런데 제가 그런 소스를 가지고 있지 않습니다.
정규분포 난수 소스는 다음 주소에 있습니다:
http://mwultong.blogspot.com/2006/12/javascript-gauss-random.html
위의 주소에서 gaussianRandom() 이라는 함수 소스를 사용하시면 됩니다.
<< Home