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

 
Previous Post CMD 란? CMD.EXE 실행하는 법; WINDOWS XP가야금 연주 MIDI 파일 만들기 (미디; mid) お琴 - Koto, OkotoJava/자바] 한글 euc-kr (MS949) 파일을, 유니코드(UTF-8)로 변환 프로그램Java/자바] 한글 확장 완성형; MS949 / cp949 인코딩(Encoding) 문제...Java/자바] 일본어 Shift-JIS 파일을, 유니코드(UTF-8)로 변환 프로그램일본어 Shift-JIS / EUC-JP 텍스트 파일 예제; Japanese Text Fi...도스용 V3.EXE 실행 배치파일; 도스창에서 백신III 실행 DOS BATeuc-kr(한글 완성형)문서 파일을, UTF-8 유니코드로 변환 방법; ANSI to U...Java/자바] 숫자(정수;int) 배열, 순서 거꾸로 뒤집기/역전시키기; Reverse ...Java/자바] 문자열 배열 요소 순서, 거꾸로(역순으로) 변환; Reverse Strin...

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

Sunday, November 26, 2006
스폰서 링크

가우스 분포 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




더 보기:
엑셀 Excel | 워드 Word | VBA 매크로 | 오피스

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

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

 

Post a Comment

<< Home RSS 2.0 feed

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