글
벤포드 법칙(Benford's law)
요즘 '구글신은 모든 것을 알고 있다'라는 책을 읽고 있습니다. 읽다보니 벤포드 법칙(Benford's law)이라는 것이 소개되어 있었습니다. 저도 처음 접해보는 법칙이어서 오늘 피보나치 수열을 가지고 테스트를 해 봤습니다. 이곳에 간단하게 소개하려고 합니다.
먼저 벤포드 법칙은 다음과 같습니다.
어떤 숫자들의 나열이 있을 때 그 숫자들의 첫 번째 숫자들을 보면 공평하게 나오지 않고 1이 가장 많이 나오고, 2가 그 다음, 3이 그 다음, ... 9가 가장 적게 나온다는 것입니다. 각각의 수가 나올 확률은 다음과 같은 식으로 표현됩니다.
1에서 9까지의 숫자를 넣어보면 확률은 다음과 같이 표시됩니다.
D |
P(D) |
1 |
0.301 |
2 |
0.176 |
3 |
0.125 |
4 |
0.097 |
5 |
0.079 |
6 |
0.067 |
7 |
0.058 |
8 |
0.051 |
9 |
0.046 |
책에서는 회계장부 뿐만 아니라 별의 별 곳에서 나오는 결과라고 합니다. 그래서 저는 피보나치 수열에서 첫번째 나오는 숫자들을 엑셀에서 계산해 보고 전체 확률과 비교를 해 봤습니다.
먼저 피보나치 수열은 다음과 같이 쓸 수 있습니다.
1, 1, 2, 3, 5, 8, 13, 21, 54, ...
처음 1, 1이 주어지고, 그 다음 수는 앞의 두 수를 더해 나가는 수열이 피보나치 수열입니다. 이 수열을 400항까지 계산을 해보고 그 수열의 첫번째 항을 찾아서 전체 갯수로 나눠 확률을 계산해 봤습니다.
계산과정에서 첫번째 숫자를 찾아내기 위해서는 상용로그의 지표를 계산해서 약간의 계산을 하면 됩니다. 예를 들어 26번째 항인 121393을 예로 들어 보면 다음과 같습니다. 우선 121393에 상용로그값을 취하면 5.0842값이 나오는데 이 숫자에서 5값이 121393의 지표가 됩니다. 이 지표에 1을 더하면 그 숫자의 자릿수가 나오게 됩니다. 121393의 값을 10^(지표)로 나누면 1.21393이 되고 이 값에서 소수점을 잘라내면 첫번째 자리의 수가 나오게 됩니다. 소수점을 잘라내는 함수는 trunc()함수입니다.
그렇게 해서 계산해 낸 결과는 다음과 같습니다.
숫자 |
나오는 갯수 |
확률 |
벤포드 법칙 |
차이 |
1 |
121 |
0.303 |
0.301 |
0.001 |
2 |
70 |
0.175 |
0.176 |
-0.001 |
3 |
51 |
0.128 |
0.125 |
0.003 |
4 |
37 |
0.093 |
0.097 |
-0.004 |
5 |
32 |
0.080 |
0.079 |
0.001 |
6 |
27 |
0.068 |
0.067 |
0.001 |
7 |
23 |
0.058 |
0.058 |
0.000 |
8 |
21 |
0.053 |
0.051 |
0.001 |
9 |
18 |
0.045 |
0.046 |
-0.001 |
계산 결과를 보면 피보나치수열의 400항까지에서 첫번째 나오는 숫자의 확률과 벤포드의 법칙과 크게는 0.4%정도 밖에는 차이가 나지 않는 것을 알 수 있습니다.
다른 수열에 대해서도 한번 적용을 시켜보면 좋을 것 같습니다. 참고하실 수 있도록 엑셀파일을 첨부해 드립니다.
하나 더 해보시길 권하는 것은 스케일 프리입니다. 피보나치수열의 처음 두 수인 1, 1대신에 다른 숫자를 넣어 보시고 확률의 변화를 비교해 보시면 거의 변화가 없다는 것을 알 수 있을 것입니다. 아무리 숫자가 변해도 벤포드 법칙은 성립하는 가 봅니다.
[새길]
[이 글이 마음에 드시면 아래 손가락 한번 눌러 주세요...^^]
'과학이야기 > 물리학' 카테고리의 다른 글
여기는 벙커원 - 그물치고 앉아있네 (0) | 2014.01.14 |
---|---|
케플러의 제3법칙은 어떻게 나왔을까? (0) | 2013.12.29 |
등전위면 그리기 계산 (0) | 2013.12.03 |
전기장 그리기 계산 (0) | 2013.12.03 |
프랙탈 나무 (0) | 2013.11.27 |