PowerLaw현상의 한가지. FirstDigitLaw라고도 한다. Benfords_law
http://mathworld.wolfram.com/BenfordsLaw.html
자연계에 존재하는 모든 "수치"값들의 첫째자리는 PowerLaw를 따른다는 법칙. "1"이 될 확률이 대략 30%
자네가 지금 가지고 있는 금액이 총 얼마야? 라는 질문의 답의 첫째자리숫자는 대략 30%는 1 이어야 한다. 그렇지 않다면 거짓이라는 얘기.
ExcelVba 스크립트 (특정 파일의 모든 쉬트의 수치값들에 대해, 레포트 쉬트를 작성함. 현재 예외처리 미흡.)
Sub makeBenfordsReport()
Dim FirstDigits(1 To 9) As Integer
For i = 1 To 9
FirstDigits(i) = 0
Next i
On Error Resume Next
For Each Worksheet In Worksheets
For Each rngCell In Worksheet.UsedRange
FirstDigit = Left(rngCell.Value, 1)
FirstDigits(FirstDigit) = FirstDigits(FirstDigit) + 1
Next rngCell
Next Worksheet
Sheets.Add
ActiveSheet.Name = "BenfordsReport"
For i = 1 To 9
ActiveSheet.Cells(i, 1) = FirstDigits(i)
Next i
End Sub반농담으로 회계장부에 있는 숫자들을 분석해서 비리 여부를 밝히는 시스템을 만들어보자는 얘기를 했었죠. ; )--안용열