これまでの記事では化けたんが乱数を用いてお化け検知を試みているというところまでは迫ることができました。しかしながら、どんな基準で良い反応や悪い反応としているかについては謎のままでした。
本記事では乱数の質(良しあし)を測る統計的手法を用いてよい反応・悪い反応の定義に迫りたいと思います。
乱数の質とは
例えば24ビットのビット列があるとします。
以下のようなビット列であればランダムなビット列のように見えます。
乱数1:11 00 10 01 01 10 11 00 10 01 11 00
しかし、以下のようなビット列だと乱数のように見えません。
もし乱数発生装置から出力されたとすれば装置が壊れているか、何らかの干渉があったと考えられるかもしれません。
乱数2:11 11 11 11 11 11 11 11 11 11 11 11
乱数3:01 01 01 01 01 01 01 01 01 01 01 01
乱数2は1の出現率があからさまに大きいです。
乱数3は01ばかりが続いています。
1の出現率の偏りや、特定の組み合わせ(01など)の出現頻度に偏りがある場合には乱数の質が悪いことになります。
乱数の質とお化け反応について
以前化けたんについて調べた時には乱数2のようにゼロまたは1の出現率が大きく偏っているのは「おばけ反応」とされていました。
また、乱数3のように何らかの秩序あるビット列は「良い反応」とされていました。
お化け反応は1の数を数えてきた一と大きく違っているかどうかで簡単に判断できます。
では何らかの秩序あるビット列とは一体何でしょうか?化けたんの公式サイトではさいころの目が1,2,3,4,5,6のように出た時、と書かれていますが、これらの数字をビット列に直すと
000 001 010 011 100 101 110 111
2ビット列に直すと以下のようになります。
乱数4:00 00 01 01 00 11 10 01 01 11 01 11
ぱっと見た目には秩序があるようには見えませんね。
それよりは乱数2のほうが秩序あるようにも見えます。
ではこのビット列はどうでしょう?
乱数5:00 00 00 00 00 00 11 11 11 11 11 11
全体でみるとゼロと1の出現率は変わりませんが、明らかに秩序だって見えるし、どちらかといえばお化け反応に近いように見えます。
これらの矛盾を解決するために2ビット列の出現率を測ってみることにしました。
この方法だとここまで見てきた乱数は以下のように整理できます。
| 2ビット列 | 00 | 01 | 10 | 11 | 1の出現数 |
|---|---|---|---|---|---|
| 乱数1 | 3 | 3 | 3 | 3 | 12 |
| 乱数2 | 0 | 0 | 0 | 12 | 24 |
| 乱数3 | 0 | 12 | 0 | 0 | 12 |
| 乱数4 | 3 | 5 | 1 | 3 | 12 |
| 乱数5 | 6 | 0 | 0 | 6 | 12 |
乱数の質からお化け反応をあぶりだしてゆきます
どうでしょうか?
乱数1は2ビット列の出現率も1の出現数も期待値どおりで完全なランダムのように見えます。
乱数2は1の出現数が異常に高く「お化け反応」のように見えます。
乱数3は01の出現率が異常に高く、秩序ある「良い反応」のように見えます。
乱数4はこれといった特徴がないようにみえます。
乱数5は1の出現数は期待値通りですが、00と11の出現率が著しく高く何らかの秩序があるように見えますが、実際のビット列を見ると「お化け反応」のようにも見えます。
出現頻度と1の出現数で測定すると、お化け反応と良い反応は別の軸としてとらえる必要があり、化けたんの「良い反応」「少し良い反応」「普通」「少し悪い反応」「悪い反応」の5つに分けるのは難しそうです。
繊維回数を使ってはどうか?
このままではよくわからないのでGeminiに相談してみたところ、0→1や1→0の回数を数えてみてはどうかと提案されました。
| 2ビット列 | 00 | 01 | 10 | 11 | 1の出現数 | 0→1 | 1→0 | 遷移合計 |
|---|---|---|---|---|---|---|---|---|
| 乱数1 | 3 | 3 | 3 | 3 | 12 | 6 | 6 | 12 |
| 乱数2 | 0 | 0 | 0 | 12 | 24 | 0 | 0 | 0 |
| 乱数3 | 0 | 12 | 0 | 0 | 12 | 12 | 11 | 23 |
| 乱数4 | 3 | 5 | 1 | 3 | 12 | 6 | 4 | 10 |
| 乱数5 | 6 | 0 | 0 | 6 | 12 | 1 | 0 | 1 |
遷移の合計を見てみると、偏ったように見える乱数2と5のスコアが著しく低く、秩序だったように見える乱数3のスコアが著しく高く見えます。
遷移頻度が低ければゼロや1など偏った状態が長く続いていることを示し、遷移頻度が高ければ偏った状態が短く、01などの「秩序だった」ビットが多く出現してそうに見えます。
また、この分け方であれば化けたんの5つのカテゴリに分けるのも簡単そうです。
実際、遷移回数がどのくらいだと統計的に優位なのでしょうか?
Geminiに計算してもらった表を載せておきます。
下の表を参考にすると遷移回数は5か4以下、高いほうは18か19以上だと優位としてよさそうですね。
補足:24bit物理乱数における遷移回数 $C$ の理論確率分布
24bitの一様物理乱数(各ビットが独立に $p = 0.5$ で発生)における遷移回数 $C$(隣接ビットが異なっている回数)は、試行回数 $n = 23$、成功確率 $p = 0.5$ の二項分布 $B(23, 0.5)$ に従います。
- 試行可能箇所: $24 - 1 = 23$ 箇所
- 全パターン数: $2^{23} = 8,388,608$ 通り(1次差分系列)
- 期待値 $\mu$: $23 \times 0.5 = 11.5$ 回
- 標準偏差 $\sigma$: $\sqrt{23 \times 0.25} \approx 2.398$ 回
| 遷移回数 $C$ | 組合せ数 $\binom{23}{k}$ | 発生確率 $P(C=k)$ | 累積確率 | 判定マッピング例 |
|---|---|---|---|---|
| 0 | $1$ | $0.000012%$ | $0.000012%$ | 赤(完全固着) |
| 1 | $23$ | $0.000274%$ | $0.000286%$ | 赤(相分離フリーズ) |
| 2 | $253$ | $0.003016%$ | $0.003302%$ | 赤(極端な低遷移) |
| 3 | $1,771$ | $0.021111%$ | $0.024414%$ ($1/4096$) | 赤(低エントロピー閾値) |
| 4 | $8,855$ | $0.105560%$ | $0.129974%$ | 黄(警戒領域) |
| 5 | $33,649$ | $0.401124%$ | $0.531097%$ | 黄(警戒領域) |
| 6 | $100,947$ | $1.203372%$ | $1.734470%$ | 黄(警戒領域) |
| 7 | $245,157$ | $2.922500%$ | $4.656970%$ | 緑(正常・ホワイトノイズ) |
| 8 | $490,314$ | $5.845000%$ | $10.501970%$ | 緑(正常・ホワイトノイズ) |
| 9 | $817,190$ | $9.741667%$ | $20.243637%$ | 緑(正常・ホワイトノイズ) |
| 10 | $1,144,066$ | $13.638333%$ | $33.881970%$ | 緑(正常・ホワイトノイズ) |
| 11 | $1,352,078$ | $16.118011%$ | $50.000000%$ | 緑(中央値) |
| 12 | $1,352,078$ | $16.118011%$ | $66.118030%$ | 緑(中央値) |
| 13 | $1,144,066$ | $13.638333%$ | $79.756363%$ | 緑(正常・ホワイトノイズ) |
| 14 | $817,190$ | $9.741667%$ | $89.498030%$ | 緑(正常・ホワイトノイズ) |
| 15 | $490,314$ | $5.845000%$ | $95.343030%$ | 水色(軽度の周期構造) |
| 16 | $245,157$ | $2.922500%$ | $98.265530%$ | 水色(軽度の周期構造) |
| 17 | $100,947$ | $1.203372%$ | $99.468902%$ | 水色(軽度の周期構造) |
| 18 | $33,649$ | $0.401124%$ | $99.870026%$ | 青(高次コヒーレンス) |
| 19 | $8,855$ | $0.105560%$ | $99.975586%$ | 青(高次コヒーレンス) |
| 20 | $1,771$ | $0.021111%$ | $99.996698%$ | 青(高周波パターン閾値) |
| 21 | $253$ | $0.003016%$ | $99.999714%$ | 青(極端な高遷移) |
| 22 | $23$ | $0.000274%$ | $99.999988%$ | 青(ほぼ完全交差) |
| 23 | $1$ | $0.000012%$ | $100.000000%$ |
青(完全交互 0101...) |
統計的ポイント:
低遷移の閾値 $C \le 3$ および高遷移の閾値 $C \ge 20$ の出現確率は、それぞれ全体の $\frac{1}{4096} \approx 0.0244%$(両側合わせて約 $0.0488%$)となります。
$2^{12} = 4096$ となるため、マイコンでビット演算による判定条件を設定する際に非常にきれいな境界値として機能します。