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
반농담으로 회계장부에 있는 숫자들을 분석해서 비리 여부를 밝히는 시스템을 만들어보자는 얘기를 했었죠. ; )--안용열