疑似乱数列を生成する計算方法の妥当性を調べるのにチューリングテスト的方法は使えるか

「結城浩の日記」から

疑似乱数列を生成する計算方法の妥当性を調べるのにチューリングテスト的方法は使えるか。

放射線などを用いた真の乱数列と、調査したい計算方法の生成する疑似乱数列とが、二つのチャネルA, Bから流れ出てくる。でもどちらの数列がどちらのチャネルから流れてくるかは分からないとする。乱数を検定するアルゴリズムを別途用意しておき、二つのチャネルのどちらが真の乱数列であるか判定できるか。 ――という話題。
(中略)
チューリングテストでは、本物の人間と適切な判定者によって、コンピュータのプログラムの知能性(?)を判定する(言い換えるとそれを知能の定義とする)。上に書いたテストでは、真の乱数列(本物の人間の代わり)と検定をするアルゴリズム(適切な判定者の代わり)によって、疑似乱数列の計算方法の妥当性を判定する(言い換えるとそれを乱数の定義とする)。

このように乱数を定義してしまうと、「生成される数列を統計的に調べて、疑似乱数生成器を評価する」という一般的なテスト(参考:Knuth. The Art of Computer Programming (2) Seminumerical algorithms)に比べて、判定が甘くなってしまいます。
一般的なテストでは、「『乱数』が持つべき統計的性質」を使えるのに対し、この方法では、「サンプルの統計的性質」しか使えないからです。この方法にも「『乱数』が持つべき統計的性質」を組み込むのなら、もはや新しい定義とは言えないでしょう

いずれにしても、これはただの「テスト」であって、「チューリングテスト」ではありません

チューリングテストの大きな特徴に、テストをするのもされるのも「知能」だということがあります(テストというメソッドが知能に実装されています)。「チューリングテスト」という用語が知能に対してしか使われないのは、こういう特殊な事情のためではないでしょうか

乱数のテストにおいて、テストをするのもされるのも「乱数」だというのは、ちょっとなさそうに思います(たとえば、乱数から何らかのテスト機能を抽出することはできません)

1 thought on “疑似乱数列を生成する計算方法の妥当性を調べるのにチューリングテスト的方法は使えるか

コメントは停止中です。