어제 비주얼 베이직 질문 올렸던 빠가사리야.
문제는 정규분포 N(3,2)을 따르는 sample 1000개를 뽑고 이중 4보다 큰 숫자들의 평균값을 구하라 (단 엑셀 화면에는 평균값 답만 나오도록 코딩)
이거 였는데 어떤 멋진 성님이 정답을 올려주셨어
Option Explicit
Option Base 0
Private Const SAMPLE_COUNT& = 1000&
Public Sub Process()
Dim aDblValues(SAMPLE_COUNT - 1) As Double
Dim i As Long
' ### 난수 시드 초기화
Randomize
' ### 1부터 샘플 개수까지 반복
For i = 1 To SAMPLE_COUNT
aDblValues(i - 1) = Application.WorksheetFunction.NormSInv(Rnd) * 2# + 3#
Next i
' ### 4보다 큰 숫자들의 평균 값을 구함
Dim dblSum As Double, lngCount As Long, dblAverage As Double
For i = 1 To SAMPLE_COUNT
If aDblValues(i - 1) > 4# Then
dblSum = dblSum + aDblValues(i - 1)
lngCount = lngCount + 1&
End If
Next i
If lngCount Then
dblAverage = dblSum / lngCount
End If
' ### 평균 값을 화면 상의 (1, 1) 셀에 출력
Cells(3, 3).Value = dblAverage
End Sub
이거여! 멋진 성님이 완벽한 답을 올려줬는데!!
문제는... 내가 모르겠어 ㅋㅋ 아무리 과제지만 내가 이해도 못할걸 덜컥 낼순없잖아? 그래서 지금 2시간째 깨고 있는데 모르겠어
내 궁금증은!
위 코딩식에서 n(3,2)의 정규분포를 따르는 샘플 1000개를 뽑는 코딩이
Dim aDblValues(SAMPLE_COUNT - 1) As Double
For i = 1 To SAMPLE_COUNT
aDblValues(i - 1) = Application.WorksheetFunction.NormSInv(Rnd) * 2# + 3#
Next i
이거 인거 같은데..? (i-1)는 모지..? 이거 빼고 하니깐 배열이 없다고 오류라고 하네? 배열은 모고 배열은 코딩하려면 어떻게 해야할까?
빠가사라리 같은 질문이지만 설명 부탁해 형들
p.s 어제 새벽에 정답 코딩 올려준 형은 진짜 고마워. 김유정 같은 여친 생길꺼야
댓글 0