裏 RjpWiki

Julia ときどき R, Python によるコンピュータプログラム,コンピュータ・サイエンス,統計学

素数の先頭桁の数字の分布

2019年07月01日 | ブログラミング

素数の先頭桁の数字の分布

Bartolo Luque and Lucas Lacasa: The first-digit frequencies of prime numbers and Riemann zeta zeros,  Proc.R. Soc. A (2009) 465, 2197-2216.
について,誤解がずいぶんある。下の方に例。

論文を読めばわかることだけど,論文に書かれているのは「ベンフォードの法則」ではなく,「拡張されたベンフォードの法則」である。前者は '1' の出現比率はほぼ 30% というものだが,後者は,'1' の出現比率が一番高く,順次減少し,'9' の出現比率が最も低い。素数を探索する範囲を広くすればその違いは小さくなり,どの数字の出現比率も 1/9 に近づいていくというもの。

数式で書くと,前者は 数字 d の出現比率は P(d) =log10(1+1/d)。
後者は,P(d) = ((d+1)^(1-α) - d^(1-α)) / (10^(1-α)-1)。αは素数の探索範囲を [1,N] とすれば α(N) = 1/(log(N)-a)。α = 1 なら「ベンフォードの法則」,α = 0 なら一様分布(どの数字も等確率)。

N が大きくなるにつれ,それぞれの数字の出現比率は 1/9 に近づいていく。

[1, 10^8]     にある素数は 5761455 個
    素数の個数       比率      理論値
1     686048    0.11908    0.11891
2     664277    0.11530    0.11533
3     651085    0.11301    0.11307
4     641594    0.11136    0.11141
5     633932    0.11003    0.11011
6     628206    0.10904    0.10904
7     622882    0.10811    0.10813
8     618610    0.10737    0.10735
9     614821    0.10671    0.10665


[1, 10^9] にある素数は 50847534 個
    素数の個数       比率      理論値  
1    6003530    0.11807    0.11795
2    5837665    0.11481    0.11482
3    5735086    0.11279    0.11284
4    5661135    0.11134    0.11138
5    5602768    0.11019    0.11024
6    5556434    0.10928    0.10929
7    5516130    0.10848    0.10849
8    5481646    0.10781    0.10780
9    5453140    0.10724    0.10718


[1, 10^10] にある素数は 455052511 個
    素数の個数       比率      理論値
1   53378283    0.11730    0.11720
2   52064915    0.11442    0.11442
3   51247361    0.11262    0.11265
4   50653546    0.11131    0.11136
5   50193913    0.11030    0.11034
6   49815418    0.10947    0.10949
7   49495432    0.10877    0.10878
8   49221187    0.10817    0.10815
9   48982456    0.10764    0.10760


以下のプログラムで計算したが,N = 10^10 までで数時間かかった。

> library(gmp)
> a = 1
> mx = 11
> tbl = matrix(0, mx, 9)
> freq = integer(9)
> for (i in 1:mx) {
+   N = 10^i
+   while(TRUE) {
+     a = nextprime(a)
+     b = as.integer(strsplit(as.character(a), "")[[1]][1])
+     if (a > N) {
+       a = a-1
+       tbl[i,] = freq
+       print(freq)
+       break
+     }
+     freq[b] = freq[b]+1
+   }
+ }


====== 誤解例,理解が不十分な例 ======

https://math-jp.net/2017/05/05/prime-benford/

> nを∞にしたときの極限をもとめたら、1から始まる素数の出現率になるはずですが、ものすごく収束がわるいようで30%になりそうではありませんでした
:
> 自分なりの結論ですが、素数はやはりベンフォードの法則のような偏りがあるのではなく一様に分布(大きくなっていくにつれ密度は薄くなっていきますが)していると考えられます。

1 で始まるものが 30% 近くになるなんて,原論文では言っていない。
極限では先頭桁の数字の出現比率はどの数字も 1/9 に近づいていくというのは正しい。

https://medium.com/@catindog/%E3%83%99%E3%83%B3%E3%83%95%E3%82%A9%E3%83%BC%E3%83%89%E3%81%AE%E6%B3%95%E5%89%87-b1382b65165e

> 自然界の数字(新聞記事に登場する数字とか)を集めていくと、先頭の文字が1が多く9に行くに従って単調減少していくというものであるそうです
:
> 10^7 までの数字の中の素数に関して、先頭の文字のヒストグラムを作成します。一番きれいに成り立っていますね。

筆者は '1' が 30% とは一言も書いていない。'1' 〜 '9' まで,単調減少している,と書いているわけだが,これが「拡張されたベンフォードの法則」であるとは書いていない。

https://mzp.hatenadiary.org/entry/20090515/benford

> スペインの数学者がBartolo LuqueとLucas Lacasaは素数にもこの法則が当てはまることをこの度解明したそうだ(論文要旨)
:
> とりあえず5000までの素数で確認したけど、特にベンフォードの法則には従っていなかった。まあ、そんなに簡単に分かることだったら論文にもならないだろうし、当然な気もする。

孫引きで,当然ながら原論文を読んでいないので,ベンフォードの法則と拡張されたベンフォードの法則の違いに気づいてもいない。

https://science.srad.jp/story/09/05/13/0641229/

> 12桁の数の場合でもやっぱり、1xxxが2xxxの2倍近いくらいになるような、明確な違いは出ないですねえ。というより、比は均等に近くなっているような?
> もっと巨大な数の領域になると法則に従うのでしょうか。(なんだか、もっと均等になりそうなヨカン)
> それとも、私がなにか勘違いしているのでしょうか。数論詳しい方ツッコミお願いします。

ベンフォードの法則と拡張されたベンフォードの法則の違いに気づいていない。

> 論文では、素数の先頭桁の分布がある意味で generalized Benford's law という法則に従っていることを示しているようです。 generalized Benford's law は Benford's law の一般化であり、 Benford's law そのものではありません。 generalized Benford's law とは何かとか、「ある意味で」とはどういう意味かとかは、僕には説明できません。知りたければ論文を読んでください。

「ボクには説明できません」なら,しかたないね。

> 直感的には桁の限界までの範囲で全部数えれば、どれも1/9、つまり11%になりそうな気がした。素数は違うか。

原論文を読んでいないので,ベンフォードの法則と拡張されたベンフォードの法則の違いに気づいていない。


コメント    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« 階乗の先頭桁の数字の分布 | トップ | Zipf の法則 »
最新の画像もっと見る

コメントを投稿

ブログラミング」カテゴリの最新記事