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

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

 
Sunday, November 26, 2006

Excel/엑셀] 가우스 난수/가우시안 랜덤 발생 함수; Gaussian Random VBA 매크로


가우스 분포 Gaussian (Normal) Distribution 의 무작위 난수(Random Number)를 발생시키는 함수를 만드는 방법입니다.

VBA 등의 VB(비베) 계열의 언어에서 사용되는 Rnd 함수는 모든 숫자가 같은 확률로 나옵니다. 그렇지만 가우시안 분포의 난수들은 종 모양 즉 Bell Curve 를 가집니다.

평균(Mean)은 0
표준편차(Standard Deviation)는 1 입니다.


정규 분포 랜덤 생성 함수; (Gaussian Random; Gauss)


(엑셀에서 Alt+F11키를 눌러, 비베 에디터를 실행하고, 비베 에디터 메뉴의, "삽입 > 모듈"을 선택한 후, 다음 코드를 붙여 넣습니다.)
Sub 가우시안_난수_테스트()

  Randomize

  Dim i


  For i = 1 To 100
    Cells(i, 1).Value = gaussianRandom()
  Next i


End Sub



Function gaussianRandom() As Double

  Dim v1 As Double, v2 As Double, s As Double


  Do
    v1 = 2# * Rnd - 1#
    v2 = 2# * Rnd - 1#
    s = v1 * v1 + v2 * v2
  Loop While s >= 1# Or s = 0#


  s = Sqr((-2# * Log(s)) / s)

  gaussianRandom = v1 * s

End Function


gaussianRandom() 이라는 함수(Function)가 가우스 난수를 발생시키는 본체입니다.

Sub 가우시안_난수_테스트() 는, gaussianRandom() 함수를 사용하여 엑셀의 셀에 가우스 난수들을 채워 넣는 작업을 합니다.


엑셀에서 Alt+F8 키를 누르면 VBA 매크로가 실행됩니다.
엑셀 시트의 A열에 다음과 같은 가우시안 난수들이 자동으로 삽입됩니다.
-0.469287097
-0.343337066
-0.35287511
-1.301266745
-0.326555315
0.556893056
0.963412082
0.844206368
-1.321916181
-2.576545104
-0.891456547
-0.635364191
-1.416223156
1.741717729
-0.771012456
0.310829513
1.399024932
0.141894973
... 이하 생략...




엑셀의 셀에서 직접
=gaussianRandom()
이렇게 적어 주어도 됩니다.


정규분포 난수, 가우시안 랜덤 넘버 생성기: ▶▶ 정규분포 난수, 가우시안 랜덤 발생기; Normal Distribution Rand Generator

▶▶ Excel-엑셀-VBA] 남녀 키(신장)의 평균, 표준편차 랜덤 난수 발생; Human Stature Random Number




tag: office
엑셀 Excel | 워드 Word | VBA 매크로 | 오피스

1 Comments:
At August 26, 2019 at 3:33 PM, Blogger durian0606 said...

이걸 응용해서 변수의 x의 120%를 기준으로 115%~125% 사이의 수를 랜덤하게 0.1의 단위로 차이가 나게 생성하고 싶습니다.
어떻게 응용하면 될까요?

 

<< Home RSS 2.0 feed

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