0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

π及び真性乱数列から任意の情報を取り出す試み

Last updated at Posted at 2024-03-27

円周率πが完全乱数列であるならば、πは無限大の情報量を持ち、全ての情報を含んでいます。

ここではπが完全乱数列であると仮定します。

このプログラムは円周率を発生させ、文字にデコードし、円周率に含まれる情報を取り出します。

このプログラムのデコード方法は、i=" 0123456789.,abcdefghijklmnopqrstuvwxyz"という文字列を使い、十進数で2桁ずつ区切って100で割り、iの長さを掛けて、iに当てはめるというものです。
取り出せる情報はデコード方法によって変わります。πは上質の乱数列なので、殆どが無駄な情報で、実用的とは言えません。

このプログラムのπの発生はガウス・ルジャンドル法に依ります。

info.py
#!/usr/bin/python3
import sys
k, a, b, a1, b1 = 2, 4, 1, 12, 4
i=" 0123456789.,abcdefghijklmnopqrstuvwxyz"
f=0
while(True):
  # Next approximation
  p, q, k = k*k, 2*k+1, k+1
  a, b, a1, b1 = a1, b1, p*a+q*a1, p*b+q*b1
  # Print common digits
  d = a / b
  d1 = a1 / b1
  n1=-1
  while(d == d1):
    if n1==-1:
        pass
    else:
        n=int((int(n1)*10+int(d))/100*len(i))
        print(i[n],end='')
    n1=d
    sys.stdout.flush()
    a, a1 = 10*(a%b), 10*(a1%b1)
    d, d1 = a/b, a1/b1

このプログラムのガウス・ルジャンドル法では、時間さえあればπの値が取り出せるので、有限のメモリから無限桁のπを引き出すことが出来ます。でも、人類に与えられた時間は有限です。無限と仮定したら面白いでしょう。

次に、/dev/randomの環境ノイズから任意の情報を取り出す試行です。

/dev/randomの環境ノイズから取り出せる乱数は、本当は真性乱数と言います。ここでは、真性乱数を完全乱数であると仮定しています。

完全乱数と真性乱数の違いは以下の通りです。

|コンピュータで使える乱数は、2種類あり、周期をもつ疑似乱数と、TRNGから得られる真性乱数があります。他に、「完全乱数」というものも存在し、確率的にしか扱うことは出来ません。つまり、完全乱数はイデア界にしか存在しません。
|
|「真性乱数」は「完全乱数」と定義が違います。
|
|・真性乱数とは、原理的に予測不能で真に無秩序な乱数。コンピューターによって算術的に生成する疑似乱数に対していう。放射性元素の崩壊など、量子的なふるまいを利用する物理乱数が知られる。真乱数。- 小学館 - デジタル大辞泉より。
|
|・完全乱数とは、完全にでたらめな順番で発生する数値の列を指し、理想の乱数とも呼ばれます。確率的にしか扱うことができません。 - Search Labs | AIによる。
|
|定義が違いますが、真性乱数を完全乱数と看做して、同様に扱って良いでしょう。
|
|完全乱数はユングの共時性(因果律を超えた奇妙な偶然の一致)があるので、EPRパラドックスがEPR相関になったこともあり、現実世界で作るのは困難もしくは不可能かもしれません。真性乱数が完全乱数か否かであるかは、yes/noの2つの答があります。

意中の人の電話番号も、完全乱数列の中に含まれます。

完全乱数からは下のデコード方法で任意の情報を取り出せるので、下のプログラムを持っているだけで、「意中の人の電話番号を取り出すことのできるプログラムを持っている」と言えます。

但し、乱数列の中のどこからどこまでかは分からないため、「意中の人の電話番号を知っている」とは言えません。

試行回数が有限回ならば、その中に意中の人の電話番号がない可能性があるので、その場合、意中の人の電話番号を持っているとは言えません。

完全乱数列は殆どが無駄な情報で、実用的とは言えませんが、無限に続ければ多分期待したナンバー列は出てくるので、辛抱強く待ち続けましょう。但し、多分その前に地球が滅亡してしまうでしょう。

何もかも知ってをるなり竈猫 富安風生

意中の人の電話番号は、竈猫に聞いたら分かりますが、猫はナンバーを喋れないので、猫語のデコードが必要です。完全乱数列は竈猫です。

これがまあ、情報の内在性と言っていいでしょう。

phoneno.py
#!/usr/bin/python3
import os
import binascii


def main():
    f=open("/dev/random",'rb') # /dev/randomを開く
    while(1):
        randomdata=f.read(1) # 1バイトの完全乱数の読み出し
        randomhex=binascii.hexlify(randomdata) #16進の文字列に変換
        randomint=int(randomhex,16) # 整数に変換
        i='0123456789 '
        n=randomint/256*len(i)
        print(i[n],end='')
    f.close() # /dev/randomを閉じる
    return

if __name__=='__main__':
	main()
	exit(0)

次に、3桁の薬箱の鍵のナンバーを当てる試行をしてみました。

確率pで起こる事象の持つ情報量は-log_2 p なので、
1/1000の確率で当たる金庫の鍵クイズの答が持つ情報量は-log_2 1/1000=3log_2 10=6.907755279です。

確率0で起こる事象が起こったら情報量無限大で、確率1で起こる事象が起こったら情報量0です。

情報量という言葉の定義は2つ必要で、
①情報理論で定量的に定義した「情報量」。
②ただ単に1ビットの情報が何桁並んでいるかを表した「情報量」。
です。単位は[bit]です。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?