ランダムネスとは


23

私はコンピューターサイエンスの学生で、現在システムシミュレーションとモデリングコースに登録しています。それは私たちの周りの日常のシステムに対処し、たとえばIIDやGaussianなどの異なる分布曲線で乱数を生成することで、異なるシナリオでそれらをシミュレートすることを伴います。私はboidsプロジェクトに取り組んできましたが、まさに「ランダム」とは実際には何であるかという質問がありました。たとえば、Math.random()Java のメソッドを介したプログラミング言語でも、生成されるすべての乱数は、基本的に「アルゴリズム」に従って生成されます。

特定のモデルを可能な限り正確にシミュレートするために、実際に生成される数字のシーケンスが実際にランダムであり、それが役立つことをどのように本当に知ることができますか?



回答:


18

簡単な答えは、実際のランダム性が何であるか、またはそのようなものが存在するかどうかを誰も知らないということです。離散オブジェクトのランダム性を定量化または測定する場合、通常はKolmogorovの複雑度を使用します。コルモゴロフの複雑さの前には、それを生み出したプロセスを考慮せずに、一連の数のランダム性を定量化する方法がありませんでした。

これは、当時人々を本当に悩ませていた直感的な例です。コイントスのシーケンスを検討してください。1トスの結果は、ヘッド()またはテール()です。コインを10回投げる2つの実験を行います。最初の実験はます。2番目の実験はます。結果を見て、のコインに何か問題があったと主張したいと思うかもしれません。または、少なくとも何らかの奇妙な理由で、得られたものがランダムではない場合があります。ただし、と両方が同じ確率である(コインが公正である)と仮定した場合、T E 1 H H H H H H H H H H E 2 T T H T H T T H T H E 1 H T E 1 E 21 / 2 10 E 2 EHTE1H,H,H,H,H,H,H,H,H,HE2T,T,H,T,H,T,T,H,T,HE1HTE1またはは等しい。実際、特定のシーケンスを取得することは、と同じくらい可能性があります!それでも、ランダムに感じますが、はそうではありません。E2(1/2)10E2 E1

一般に、コルモゴロフの複雑さは計算可能ではないため、どのような種類の「完全にランダムな」プロセスがそれを生み出したかに関係なく、数字のシーケンスがランダムであると言う方法を計算することはできません。


無限シーケンスの場合、正規性のように、ランダム性を定義するためのより多くのツールがあります。
デニス

1
@dkuper Kolmogorovの複雑さの定義によると、最初のセグメントの無限シーケンスはすべてランダムですが、正常であるだけでは真にランダムと見なされるものではないことに注意してください。たとえば、通常の番号があり、そのすべての初期セグメントには0よりも1が多くなっています。
クインカルバー

@Quinn Culverはい、私は同意します。正規性は、(特に)無限シーケンス用の追加ツールの例にすぎません。コルモゴロフの複雑さなどは依然として有用です。
デニス

8

Java(または同様の言語)の場合、乱数の作成に使用されるアルゴリズムを知っています。それは、単一の種で始まっている場合、数字がすべてではランダムではない、つまり私たちが知っていればの順序で0... nは、我々は知っているI + 1、または条件付き確率として次のように述べています K L i P a i + 1 = k a i = l { 0 aa0ana+1

klPa+1=ka=l{01}

それにもかかわらず、これらのシリーズは、乱数が満たすプロパティ(WP:Autocorrelationを参照)を満たし、これらのプロパティはタスクを達成するのに十分であることがよくあります。努力してください。


3

特定のシーケンスがランダムであるかどうかを確実に知ることは不可能です。ただし、シーケンスの特性(またはパラメーター)を調べて、対象の分布が与えられた場合にそのようなシーケンスの確率を計算できます。

ランダムジェネレーターを使用して無限に長いシーケンスを生成できる場合、ランダム分布と同じパラメーターが必要です。たとえば、標準のガウス分布を使用している場合、シーケンスは平均0と標準偏差1に近づいているはずです。そのため、ジェネレーターを確認する予備的な方法の1つは、非常に長いシーケンスを生成し、それが目的のランダム分布に近似していることを確認することです。μ=0σ=11

さらに検証するために、対象の分布のモーメント(歪度など)を追加できます。IID番号の場合、シーケンスの今後の要素を予測するために機械学習アルゴリズムをトレーニングし、履歴がパフォーマンスを向上させるという帰無仮説をテストすることもできます。ただし、これらの方法はどれも、シーケンスが真にランダムであることを証明することはできず、せいぜい、シーケンスがランダムでないことを(ある程度確実に)認識できます。


3

答えを計算する現代の理論は、「ランダムなソースとは、お気に入りのアルゴリズムのクラスに対してランダムに見えるソースです」です。これは実用的な見方です。ランダム性の原因が、気にするすべてのアルゴリズムにとって真のランダム性のように見える場合、それ以外は何も重要ではありません。真にランダムなコイントスが与えられたかのようにアルゴリズムを分析でき、分析により正しい答えが得られます。

AA

  • 常に停止するすべてのチューリングマシン
  • すべての多項式サイズの回路ファミリ
  • すべての多項式時間チューリングマシン
  • すべてのログスペースチューリングマシン

Aバツnバツn{01}nϵAAA

|Pr[Aバツn=1]Pr[Aうんn=1]|ϵ
うんn{01}n

この考えは、擬似ランダム性の現代の正式な概念の背後にあります。


2

さらに2セントです。

ランダム化されたアルゴリズムについて考える1つの方法は、入力を受け取り、その入力に対して不思議なことを行い、何らかの(「予測不可能な」)出力を生成するボックスを描くことです。

しかし、代わりに、「真の」入力と、などの関数から取得するいくつかの「ランダム」入力の2つの入力を取る決定論的アルゴリズムと考えると便利Math.Random()です。

[01]nログn

[01]nログn

Jonathanとfraflが述べているように、ランダムなソースが「ランダムに」動作しているかどうかを確認する方法があります。しかし、彼らがすることは、このランダムなソースから来る将来の情報についてあなたが信じるものに影響することだけです。前のビットに関係なく、各ビットが等しく0または1であると考えられる場合、知識と信念の限りでは、そのソースは一様に独立してランダムであるため、知識と信念の限りでは、高速で実行されるか、正しく動作するなどです。とにかく、それは私の哲学的見解です。


-2

真に乱数を生成することはできません。指定された方程式と特定のシード値を使用して擬似乱数を生成するためのさまざまな方法があります。そのため、乱数のシーケンスはシード値に依存します。シード値がわかれば、シーケンスがどうなるかを予測できます。これとは別に、乱数を生成する他の方法があります。人々は現在、ディスクヘッドの移動時間やコンピューターに組み込むことができる他の物理的な方法を使用するなど、真の乱数を生成するためにいくつかの方法を使用しています



-3

あなたがJava Randomize
Math.random()を言ったような与えられた方法によって; ランダム(n); Delphi

独自の構造とロジックを実装して乱数を生成できます。乱数を生成すると
、そのような「アルゴリズム」が特定の仕様で実行され、より良い乱数結果が得られます。
そしてその上にロジックを構築します。

ありがとう。


2
これは、「シーケンスがランダムであることをどのように知るか」という質問にどのように答えますか?
-Juho

既に述べたように、ただ...「ランダム」はチートと見なすことができますが、ランダム効果には影響しません。シンプル。
ニックネーム

-4

他の答えは良いです、この非常に重要な/意図せずに深い質問に関するいくつかの他の角度がここにあります。コンピューター科学者は数十年にわたりランダム性を研究しており、それを研究し続ける可能性があります。多くの深いつながりがあり、分野全体で最も重要な未解決の質問が残っています。ここにいくつかのポインタがあります。

  • 「真/真のランダム性」は、ハードウェアベースのRNGで利用できるツェナーダイオード、量子力学などの低レベルの物理プロセスと「ノイズ」で発生します。

  • コンピューター領域で生成される他の数値は、「疑似ランダム」と呼ばれるもので、シミュレートされ、「真のランダム性」とは決して一致しません。これらはいわゆるPRNGです

  • ある意味で「品質」または「セキュリティ」を測定する「乱数ジェネレーターの暗号強度」という重要な意味があります。たとえば、暗号的に安全なPRNGを参照してください。基本的に、「弱い」ジェネレーターは「ハードな」ジェネレーターほど計算の複雑さはなく、「弱い」ジェネレーターは簡単に壊れます。

  • OnOn2=NP証明には特定の「複雑さ」が必要です。そうでない場合、同じ分析手法を使用してPRNGを破ることができます。さらに、意外なことに、ほとんどまたはすべての複雑度クラスの分離/技術は、その日(または場合によってはその後)十分な複雑さがありません。

  • TCSの重要な研究トピックはアルゴリズムのランダム化とランダム化です。大まかに言うと、「真のランダム性」をPRNGに置き換えることによりアルゴリズムがどの程度変更されるかを研究することであり、主題にはさまざまな深い定理があります。ここに、この分野での研究の風味を与える高ランクのcstheory.se質問があります:決定論が難しい効率的で単純なランダム化アルゴリズム

  • TCSで別のキーに関連するトピックは、情報であるエントロピーもともとで導入- 物理学の長い「情報DIS-オーダー」のとで他のいくつかの重要な概念のように密接に関連する概念を研究しているago-は、(T)CSは、クロスカット、そのキーアイデアの一つであると思われます適用された分析と理論的分析の境界、いくつかの式も同じです。

  • 再び活発な研究の状態を証明する、cstheory.seにはこの質問に関連する他の上位の質問があります。ほぼ同じものがあります:真に乱数を生成するチューリング計算可能


そしてもちろん、コンピューター科学者だけが「ランダム性」に興味を持っているわけではありません。それはおそらく、宗教的および哲学的な観点からも考慮された、年齢を問わない質問です。
ジュホ

物理学でも、QMの発明とボーア・アインシュタインの議論であるベルズthmの重要な概念であり、依然として「隠れた可変理論」を研究の活発な分野に動機付けています。あなたが言うように、多分誰もそれが何であるかを知らないかもしれませんが、多くはまだ我々が話すようにより決定的な答えを見つけることに取り組んでいます。
vzn

よりNP角対Pにランダムの関連性に、それが充足し、クリーク「転移点」などに表示本稿のようにランダムグラフ上のK-クリークの単調複雑ロスマンによって
vzn

乱数ジェネレーターを破壊することは、RNG攻撃を参照してください、ウィキペディア
-vzn

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.