TOP TrySignal 追加プラグイン 個人ユーザー登録 補足情報
ユーザーサポート 団体ユーザー登録
補足情報

1.エノン写像について

2.乱数の品質について


1.エノン写像について (2003/09/21)
 先日、ある方から「サンプルにエノン写像の軌道を表示する回路があるが、表示される図は私が知っているエノン写像の軌道と異なる」というご指摘をメールで頂きました。

 ちなみに、この「サンプル」はTrySignalにサンプルとして付いている Sample_8.tsd のことです。参考として、この回路が表示する図(図1)と元になっている式(式1)を下に示します。

(図1)

 ためしにGoogleで「エノン写像」というキーワードで検索すると182件(2003/09/21現在)ヒットしますが、表示されているのは、確かに(図2)に示したような画像ばかりのようです(全部見たわけではないですが)。その式を(式2)に示します。ちなみに、(図2)におけるパラメータは a = 1.4 b = 0.3 です。

(図2)

 そこで今度は、キーワードを「 Henon cos sin 」として「Web全体から検索」すると、ちゃんと(式1)のものも表示されます(ほとんど外国のWebサイトですが)。

 要するに、エノン写像といっても一つではない、ということのようです。

 いろいろ見ていたら、もうひとつ「エノン写像の軌道」を見つけました。それを(図3)、(式3)に示します。(図3)におけるパラメータは a = 0.3 b = 0.9996 です。また、x の初期値が 0 だとずっと 0 のままなので、最初の x を 0.001 としています。

(図3)

 (図2)、(図3)の作成は、 TrySignal で行いました。その回路をここからダウンロードできるようにしようかとも思いましたが、やめておきます。
 式を見るとわかるように、どちらも Sample_8.tsd より簡単な回路で実現できます。ちょうど良い練習問題になると思いますので、興味のある方は自分で作成してみてください。


2.乱数の品質について (2003/09/23)
 TrySignal の Ver.1.2.0.4 で GenRandomBase というデバイスを追加しました。このデバイスは、「乱数発生器」カテゴリーの全てのデバイスの基本になっている 32bit 乱数生成ルーチンを検証するためのものです。この GenRandomBase を使って乱数の検証を行う回路を作成してみましたので紹介します。
 紹介する回路は、暗号モジュールに関する米国政府標準 FIPS PUB 140-2 にある4つの乱数検定法を回路化したものです。(但し、これらの方法は現在のドキュメントでは打ち消し線が入っていますので、棄却されたようです。)

注: ダウンロードした tsd ファイルを閲覧、実行するには Ver.1.2.0.4 以降の TrySignal が必要です。それより前のバージョンでは、 GenRandomBase デバイスが読み込めません。ちなみに、ユーザー登録を行っていない状態(体験モード)でも、以下のファイルを閲覧、実行することは可能です。

(1) The monobit test (1次元の度数検定)

FIPS_Test1.tsd ( 3.8KB )

(2) The poker test (ポーカー検定)
  (厳密には、一般にポーカー検定と呼ばれているものではなく、4次元の度数検定です。)

FIPS_Test2.tsd ( 17.7KB )

(3) The runs test (連の検定)

FIPS_Test3.tsd ( 11.5KB )

(4) The long runs test (最長連の検定)

FIPS_Test4.tsd ( 5.9KB )

 各検定法の内容は、回路図の最初のページに書いてあります。合否判定の数値も書いてありますが、理想的な擬似乱数であっても数千〜数万回に1回程度は、判定の数値からはずれることもあり得ます(このあたりが、棄却の理由かもしれません)。

 これらの検定に合格したからと言って、理想的な擬似乱数であることが証明されるわけではありません。しかし、少なくともこれらの検定で判明するような欠点を含んでいないことは判ります。それぞれ数十回実行してみましたが、全て合格でした。

 乱数の品質に関しては、度数や連に関する要素の他に、周期性に関する要素があります。数値計算による乱数(擬似乱数)は必ず周期を持ちます。TrySignal の 32bit 乱数生成ルーチンも数値計算による乱数なので、当然周期を持っています。
 但し、理論的な解析が難しいので、確定的に周期はいくつであると言うことはできません。確実に言えるのは、2の1728乗よりは長くないということです。ではどれぐらい短くなり得るかが問題ですが、アルゴリズムから考えて2の54乗より短くなることはほとんど無いと考えられます。
 TrySignal のクロック値は最大で(2の32乗) - 1ですから、演算を最大クロックまでやったとしても、乱数に周期性が現れることは無いはずです。


ページ先頭へ