어제 비주얼 베이직 질문 올렸던 빠가사리야.

문제는 정규분포 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 어제 새벽에 정답 코딩 올려준 형은 진짜 고마워. 김유정 같은 여친 생길꺼야