2のべき乗数,2^0, 2^1, 2^2, 2^3, ... の先頭桁を考える。
一見,1, 2, 4, 8, 1, 3, 6, 1, 2, 5, 1, 2, 4, ... と長さ10の周期で循環しそうに見えるがそれは違う。
先頭桁の分布はベンフォードの法則に従う。
> library(gmp)
> func <- function(n)
+ {
+ a <- as.character(n)
+ a <- strsplit(a, "")
+ a <- unlist(a)
+ return(a[1])
+ }
> a <- integer(100000)
> for (i in 1:100000) {
+ n <- as.bigz(2)^i
+ a[i] <- func(n)
+ }
> table(a)
このプログラムによって得られる結果は,正確にベンフォードの法則に従うものである。
出現度数は次のようになる。
a
1 2 3 4 5 6 7 8 9
30102 17611 12492 9692 7919 6695 5797 5116 4576
3 のべき乗の場合も同じような結果になる(驚くほど似ている)。
a
1 2 3 4 5 6 7 8 9
30101 17611 12492 9692 7917 6696 5799 5116 4576
いずれの場合も,各数字の理論的な出現確率は
[1] 0.30103000 0.17609126 0.12493874 0.09691001 0.07918125 0.06694679
[7] 0.05799195 0.05115252 0.04575749
なのだ。
例えば、2010年1月2日をYYYYMMDD形式で書き下すと 20100102 となり、逆から読んでも 20100102 になります。
また、日付を扱うライブラリを利用した場合はそのように明記してください。
余裕のある方は以下にもチャレンジしてください。
※ちなみに、日本では年月日の順で表記するのが一般的ですが、表記の順番は国によってバラバラのようです。