Wednesday, February 14, 2007
Excel-엑셀-VBA] 남녀 키(신장)의 평균, 표준편차 랜덤 난수 발생; Human Stature Random Number
한국인 20대 남녀의 실제 키(신장)에 해당하는 랜덤한 숫자를 만들어서, 셀에 입력하는 비베 코드입니다.
실제 인체 측정 데이터에 근거하여, 키를 시뮬레이션(?)하는 것입니다.
아래에 정의되어 있는 gaussianRandom() 이런 가우시안 랜덤 함수에
(표준편차 * gaussianRandom()) + 평균
이런 공식을 적용하면 결과가 나옵니다.
실제 사람의 키의 평균과 표준편차는 여기서 구할 수 있습니다: ▶▶ 통계] 대한민국 인체 치수의 평균 표준편차 데이터 얻기; Size Korea, Human Engineering Data
(엑셀에서 Alt+F11키를 눌러, 비베 에디터를 실행하고, 비베 에디터 메뉴의, "삽입 > 모듈"을 선택한 후, 다음 코드를 붙여 넣습니다.)
비베 에디터에서 F5 키를 누르거나, 엑셀에서 Alt+F8 키를 누르면 VBA 매크로가 실행됩니다.
※ 아래 박스 클릭 후, 키보드 화살표 키로 좌우 스크롤 가능함
A열에는 남자의 키, C열에는 여자의 키가, 1000명 분량씩, 총2000명 분량의 키가 만들어집니다.
엑셀의 빈 셀에
=STDEV(A:A)
=STDEV(C:C)
이런 함수를 넣으면, 방금 만든 랜덤 숫자들의 표준편차가 계산되어 나옵니다. 58.3 과 49.4 에 가까운 숫자가 나올 것입니다.
표준편차 구하기: ▶▶ Excel/엑셀] 표준편차 구하기 함수 (표본, 모집단 전체); Standard Deviation
▶▶ Excel/엑셀] 가우스 난수/가우시안 랜덤 발생 함수; Gaussian Random VBA 매크로
평균, 표준편차 계산기 (온라인 버전): ▶▶ 평균 계산기, 합계 구하기, 표준편차 계산기, 중앙값; Sum Average Stdev Median Calc
실제 인체 측정 데이터에 근거하여, 키를 시뮬레이션(?)하는 것입니다.
아래에 정의되어 있는 gaussianRandom() 이런 가우시안 랜덤 함수에
(표준편차 * gaussianRandom()) + 평균
이런 공식을 적용하면 결과가 나옵니다.
실제 사람의 키의 평균과 표준편차는 여기서 구할 수 있습니다: ▶▶ 통계] 대한민국 인체 치수의 평균 표준편차 데이터 얻기; Size Korea, Human Engineering Data
VBA: 평균, 표준편차 지정하여, 랜덤 난수 만들기 소스
(엑셀에서 Alt+F11키를 눌러, 비베 에디터를 실행하고, 비베 에디터 메뉴의, "삽입 > 모듈"을 선택한 후, 다음 코드를 붙여 넣습니다.)
비베 에디터에서 F5 키를 누르거나, 엑셀에서 Alt+F8 키를 누르면 VBA 매크로가 실행됩니다.
※ 아래 박스 클릭 후, 키보드 화살표 키로 좌우 스크롤 가능함
Sub Human_Stature_Random_Number_Example()
Randomize
Dim i
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' 20 ~ 24세 남자의 키: 평균 1738 mm, 표준편차: 58.3 mm
' A열에 출력
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
For i = 1 To 1000
Cells(i, 1).Value = Round((58.3 * gaussianRandom()) + 1738)
Next i
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' 20 ~ 24세 여자의 키: 평균 1607 mm, 표준편차: 49.4 mm
' C열에 출력
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
For i = 1 To 1000
Cells(i, 3).Value = Round((49.4 * gaussianRandom()) + 1607)
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
Randomize
Dim i
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' 20 ~ 24세 남자의 키: 평균 1738 mm, 표준편차: 58.3 mm
' A열에 출력
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
For i = 1 To 1000
Cells(i, 1).Value = Round((58.3 * gaussianRandom()) + 1738)
Next i
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' 20 ~ 24세 여자의 키: 평균 1607 mm, 표준편차: 49.4 mm
' C열에 출력
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
For i = 1 To 1000
Cells(i, 3).Value = Round((49.4 * gaussianRandom()) + 1607)
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
A열에는 남자의 키, C열에는 여자의 키가, 1000명 분량씩, 총2000명 분량의 키가 만들어집니다.
엑셀의 빈 셀에
=STDEV(A:A)
=STDEV(C:C)
이런 함수를 넣으면, 방금 만든 랜덤 숫자들의 표준편차가 계산되어 나옵니다. 58.3 과 49.4 에 가까운 숫자가 나올 것입니다.
표준편차 구하기: ▶▶ Excel/엑셀] 표준편차 구하기 함수 (표본, 모집단 전체); Standard Deviation
▶▶ Excel/엑셀] 가우스 난수/가우시안 랜덤 발생 함수; Gaussian Random VBA 매크로
평균, 표준편차 계산기 (온라인 버전): ▶▶ 평균 계산기, 합계 구하기, 표준편차 계산기, 중앙값; Sum Average Stdev Median Calc
tag: office
엑셀 Excel | 워드 Word | VBA 매크로 | 오피스
<< Home