人間の脳の乱数生成アルゴリズム?[閉まっている]


37

人間が(やや「真」の)乱数を生成できる実用的で学習しやすい「インヘッド」アルゴリズムを知っていますか、または考案しましたか?「インヘッド」とは、外部ツールやデバイスがないことが好ましいということです。また、高出力(1分あたり多数の乱数)が望ましいです。

SOでこれを尋ねたが、あまり興味を引かれなかった。たぶんこれはプログラマーにより適しています。


7
@ S.Lottそれはまったくばかげているとは思わない。非現実的?もちろん、なぜでしょう。不条理?確かにそうではありません。そして、たとえそれがあったとしても、不条理は新しい有用な考えへの道を開くことができます。
biziclop

21
9 .... 9 .... 9 .... 9-ランダムではないことを証明することはできません。

13
S.Lott:擬似乱数ジェネレーターを簡単に計算できるという考えは、まったく馬鹿げていません。OPは、ここで人間の偏見を回避する方法を望んでいると思います
ジェンズ

8
多くの人が無知の議論を高く評価しているように見えるのはおもしろい(そして同時に少し憂鬱な)。「私はそれを想像することはできません、したがって、存在することはできません」、または完全にポイントを失っている答え。
-biziclop

4
この質問は、プログラミングではなく個人の認知能力に関するものであるため、トピック外のようです。

回答:


36

George Marsagliaのアルゴリズムを次に示します。

23という2桁の数字を「シード」として選択します。

新しい2桁の数字を作成します。10桁に6単位の桁を加えた数字です。

シーケンスの例は、23-> 20-> 02-> 12-> 13-> 19-> 55-> 35-> ...

その周期は、モジュラス10に比較的素数の残基のグループで、乗数6の次数です(この場合は59)。

「ランダムな数字」は、2桁の数字の単位の数字です。つまり、3,0,2,2,3,9,5、...シーケンスmod 10です。頭。


これは本当にいいですね。
-biziclop

4
これは特定の人のニーズにとっては問題にならないかもしれませんが、これはあなたに90の異なるストリームしか与えません。
コンプマン

5
79、79、79、79、79、79、79、79、79、79、79、おっと!私はあなたが<= 60にとどまることになっていると仮定しますが、シードがなければシードにクロックを使用できるのでうまくいきます。
EDS

4
@edsあの、何?79 - > 61 - > 15 - > ...
Izkata

1
おそらく@edsは59を意味していました。1〜58のすべての数字は公平なゲームのようです。
エルハニス

26

チェックアウト風水でこの記事を。特にGeomanticチャートの生成に関するセクション。これには、2進数といくつかの単純な再帰的計算を使用した擬似乱数生成手法が含まれます。これは頭​​の中でかなり簡単にできるように思えます(ただし、1枚の紙が役立ちます)。

免責事項:私は自分で試していない。十分に乱数が必要な場合は、から出力を取得するか/dev/randomrand便利な言語で使用するか、信頼できるd20を使用します。

あなたが数学の天才なら、明らかに信頼できない方法であるとしても、二乗法は計算的にかなり軽いです。


3
+1これはこの質問に対する最初の真剣な答えだと思います。少し悲しい。
イェンス

@Magnus Wolffelt-アフリカでのフラクタル幾何学の文化的重要性についてのロン・エグラッシュによるTEDトークで言及されたことを思い出しました。「バマナ砂占い」。かなり興味深いのですが、今のところ、この手法をどのように使用するかはまだ分かりませんが、占い師は必要ありません。ted.com/talks/ron_eglash_on_african_fractals.html
イナイマシ

1
私が見る限り、その地質学的方法では、ランダム性のソースを「改善」することができます(「デバイアス」がより良い用語だと思います)。だまされてはいけませんが、OPが探していたものではありません。....それはかなりではないと言うためにどのではありません
ノーマン・グレー

@Norman Gray-デフォルトでは、人間の脳は偏った任意の数字を思い付くことができます。
イナイマティ

@Inaimathi正確に:それが、数字のバイアス除去が重要であり、あなたが指摘した方法が役立つ理由です。または私はあなたを誤解しています。
ノーマングレー

10

合理的な仮定は、あなたがあなたの脳に保存する膨大な量の言語情報に頼らなければならないということだと思います。ソースは何でも、歌の歌詞、詩、モンティパイソンのスケッチでもかまいませんが、心から知っているものでなければなりません。

次に、無意識のバイアスを可能な限り排除する、かなりランダムな部分を選択する必要があります。たとえば、これを行う方法は、曲を選択し、k10から20の間の数字を選択してからk、歌詞のth文字を見つけることです。

明らかに、文字の頻度が異なるため、これはそれ自体で均一な分布を与えませんが、それでもランダムな文字であるか、少なくとも外部ソースなしで可能な限りそれに近い文字です。

更新:ところで、人々がコイン投げのランダムシーケンスを記述するように求められた場合、最も一般的な間違いは、シーケンスを「ランダムにしすぎる」ことです。同一の結果の実行は短すぎます。分析が明らかになります。このメソッドは、主にこのトラップを回避することを目的としています。もちろん、このランレングスバイアスの影から他の異常が発生する可能性がありますが、それらを見つけるには適切な実験が必要です。少し皮肉なことに、単独で考えることで乱数を生成するアルゴリズムは、単独で考えることでは見つけることができません。


それでも私はあなたが多くの微妙な方法で偏見されることを期待するでしょう。(IEは同じグループの曲を選ぶ傾向があります)
ザカリーK

@Zachary K疑いの余地はありませんが、数字を選択する必要があります。バイアスをなくすことはできませんでしたが、この方法を使用すると、選択する文字を知ることがほぼ確実にできなくなります(ただし、時間の経過とともに、いくつかの文字を記憶することになります)。
-biziclop

Eini mini miny moe、私たちは子供の頃のように。
ザカリーK

2
「10から20の間の数kを選択する」。17.最小の乱数。
S.Lott

@ S.Lottこの数字がどんなにランダムであっても問題ありません。あなたがそれを必要とする唯一の理由は、物事の最初の数文字をより簡単に覚える傾向があるからです。
-biziclop

9

時計をサンプリングします。

60(秒)の乱数が必要な場合にこれを行います。どんな時でも適切なモジュロを取る。サイコロをシミュレートする4:17:23 PMは5になります。


そして、1分あたりの数が多いですか?
ゲイリーロウ

確かにわかりません。分を含めることで数字のプールを3600にすることを言っているのですか?私は推測しますが、数字が大きいほどランダムではなくなりますか?サンプルを簡単に迅速に取得できなかったように。
マークカンラス

1
@Gary Roweこの基準は廃止する必要があります。使用する方法に関係なく、人間の脳は単に遅すぎるからです。
-biziclop

申し訳ありませんが、1分あたり60を超える数値が必要な場合、あなたのアプローチはどのように機能するのでしょうか。後知恵では、人間の脳に毎分その数を生成するように要求することは、とにかくそれを最大にするので、心配しないでください。
ゲイリーロウ

@biziclop問題ありません。@Markのアプローチで状況を検討しているときに、コメントの衝突があったようです。
ゲイリーロウ

5

素晴らしい質問です。良い答えが非常に難しいことが証明されるのではないかと心配しています。

しかし、最初は、2人が関与している場合に「真の」ランダム性を生成するのは非常に簡単です。単純に1人の人を頭のモジュラスで静かに数え、もう1人は任意の間隔で「停止」します。その後、この数は標準的な方法を使用して他の分布に変換できます。

この方法を堅牢にするためには、モジュラスが大きすぎてはなりません。さもないと、小さい数に対して強いバイアスがかかります。この方法の確率的特性を分析する研究が存在するかどうかを確認したいです。


カウントが高速で行われることが重要だと思います。カウントする人は、リズミカルにカウントしないように注意する必要があります。なぜなら、十分なエントロピーを達成するために、すべての数をかなりの数のサイクル(直感的に4以上)にする必要があるからです。
アーロントーマ

ランダム性を改善するための改善提案:カウントする人は、最初に0とモジュラスの間の秘密のランダムシードX₀を選択します。カウントと組み合わせて、それはまだ最小限の思考努力でまともなランダム性を提供する必要があります(カウント期間に比べてゆっくりとカウントする場合でも、つまり、サイクル数が少ない-直感的に≥2は問題ありません; <2は大丈夫です)。
アーロントーマ

4

これは複雑な質問です。私は雑草にあまり遠くさまようことなく、少し説明しようとします。

まず、「真のランダム性とは」と問う必要がありますか?そのような議論はすぐに哲学的な水域に退化するが、要点はこれだ:「宇宙は本当にランダムなのか」?言い換えれば、時間と物質を量子化する場合、現在の状態から宇宙の次の状態を計算できますか?はいの場合、宇宙は決定論的であり、真のランダム性はありません(「哲学的」について私が意味するものを参照してください?)

「真のランダム性」を定義するのは難しいため、しばしば「疑似ランダム性」に落ち着きます。もちろん、これはコンピューターで「乱数」を生成するときに一般的に必要です。

最も単純な擬似乱数ジェネレータは、ディルバートの有名な「9 .. 9 .. 9 ..」アルゴリズムのようなものです。しかし、直感的にはあまり良くないようです(もちろん冗談です)。統計学者は、一連の意図的にランダムな出力が「良好」であるかどうかを判断するために、多くのテストを開発しました。「カイ二乗検定」のウィキペディアのページから始めて、これらの試験について読んで午後を過ごすことができます。

「線形合同ジェネレータ」のような単純なコンピュータアルゴリズムは、カイ2乗検定に十分な数を生成します(ただし、このアルゴリズムを何かから「シード」する必要があります)。

「良さ」の次のステップは「暗号学的に強いランダム性」です。これは、シーケンスa1、a2、...を使用すると、多くの計算を使用しない限り「合理的な確率」でシーケンスの次の数を予測できないことを意味します。これらの数値は、「計算上疑似ランダム」と呼ばれることもあります。このようなシーケンスを取得する一般的な方法の1つは、次のような「ハッシュチェーン」を使用することです。a1= SHA512(a2)、a2 = SHA512(a3)、...計算的に反転するのが難しいため、a2はa1だけを予測することは「不可能」であると考えています。

それでは今、疑問が生じます。あなたの質問に規定されている規則の下で人間ができることは何ですか?人間はランダム性を生成することで悪名が高い。以前は、コインをめくっているように、H、T、T、H、H、H、T、Tなどを「ランダムに」入力してコインフリップを生成しようとするWebサイトがありました(ただし、あなたの頭)。しばらくすると、Webサイトは50%の確率でフリップを予測し始めます(隠れマルコフモデルを使用)。私たちはこれが苦手です。

おそらくあなたの頭の中で実行可能なさまざまなミキシング技術を使用して状況を改善する方法があります。そして、なぜあなたがこれを望むのかについて私が思いつくことができるアプリケーションさえあります(政治囚は外部の同盟国へのメッセージを暗号化したいです)しかし、この投稿は十分に長いと思います。:)


1
真にランダムな物理的プロセスが存在するかどうかは議論の余地がありますが(EPRパラドックスを含む実験は肯定的な答えを示唆しますが)、コルモゴロフの複雑さに基づいて、ランダムシーケンスの理論的定義が存在します。
biziclop

3

ツールベースのRNGが急増したまさにその理由は、乱数生成のための優れたインヘッドアルゴリズムがまだ開発されていないことです

幸運なことに、フロップ用のコイン、ローリング用のサイコロ(さまざまな数のファセットを含む)、ピッキング用のカード、および描画用のストローを含む、ポータブルな乱数ジェネレーターは、低コストで比較的簡単に入手できます。さらに、私たちの中の技術愛好家には、ほとんどのモバイルプラットフォームで利用可能なこれらのツールのかなり良いシミュレーションがあります。

肉食器の代替品よりもこれらのいずれかを心からお勧めします。


1
そして、これらの物理デバイスは実際に予測不可能な性質を持っているため、ある意味では、最良のコンピューターアルゴリズムよりもランダムです。
オメガケンタウリ

!@OmegaCentauri:当然のことながら、私はあなたがそこに何をしたかを参照; O)(。それのようにしてくださいしゃれが意図しなかったが、私:))
アーロン・トーマ

3

高度にランダム化された、毎分大量の、人間によって生成されたものですか?起こらない

直面する主な問題は

  • 人々はすぐに退屈するので、パターンはすぐに発生します
  • 人間の脳はパターン認識/作成に専念する多くの構造を持っているので、あなたはそれを打ち負かさなければなりません
  • 真に乱数には、人間が回避しようとする繰り返しが含まれます
  • 人間は大きな数では得意ではありません

これにより、多くの暗号作成者は、「インヘッド」数値に基づいてパターンを作成するのは単純すぎたため、ランダムな外部プロセスを優先して「インヘッド」技術を放棄することになりました。

オフトピックだが興味深い

頭の中で乱数を生成するメカニズムではありませんが、ソリティアアルゴリズム(Neal StephensonのCryptonomiconに描かれている)は、暗号化の目的で乱数を使用することがいかに難しいかを示しています。かなり安全な出力を作成するには、通常のトランプのパックだけが必要ですが、その方法は非常に複雑です。


1
これは質問に答えないと思います。回答の4つのポイントは、人々がアルゴリズムなしで乱数を見つけようとした場合にのみ適用されます。OPはそれを認識しており、これが彼が人々が頭の中でできて良い結果を出すことができるアルゴリズムを求めている理由だと思います。
FabianB

2

私は、この問題について人々が思いついたかもしれないものに本当に興味があります。

机から離れてラスベガスに行ってください。

人類には多数のランダム化手順があります。それらはすべてラスベガスで見ることができます。

回転する円があります。タンブリングキューブがあります。そして、トークンをシャッフルしました。それらはすべてすばらしい働きをします。

キューブはおそらく最も古いものです。どうやら一点で使用される細長い4面の棒がありました。ヒツジの対称立方体のナックルボーンは、何千年もの間人気がありました。言語を開発したのとほぼ同時期に、おそらくこれらの種類のランダマイザーを使用しています。

http://itunes.apple.com/us/app/motionx-dice/id287509231?mt=8

「ランダムな数字を生成する算術的方法を考えている人は、もちろん、罪の状態にあります」

---ジョン・フォン・ノイマン


7
Downvoted-私は、乱数を生成するための外部ツールではなく、記憶や刺激に依存して真の乱数を生成できるインヘッドアルゴリズムには興味がありません。
マグナスウルフフェルト

3
あなたの頭の中でサイコロを転がすことはできません
jk。

2
@ jk01:正しい。頭の中でランダムに行うこともできません。
S.Lott

@ S.Lott-あなたが言うことは、「典型的な人間は、素朴な方法では外部ツールを使用しないと、頭の中に一貫した乱数を高速で生成できない」と言っていると思います。
イナイマティ

1
@Inaimathi。いいえ、もっと強力なことを言っています。頭の中でランダムに行うことはできません。脳には偏りが詰まっているため、アルゴリズムが必要です。有限で効果的な決定論的なアルゴリズムはランダムではありません。単にそれを行うことはできません。疑似ランダムでさえある単純で十分なアルゴリズムはないため、ランダムに近似することはできません。サイコロは小さくて便利で、長い歴史があります。
-S.Lott

1

何も考えられません。実際、私はあなたが思いついたものはどれもそれが価値のないほど多くのバイアスを持っていると期待するでしょう。

乱数が必要な場合は、通常、サイコロを転がします。


0

頭の中でできるLCMを求めていますか?これがサイコロよりも優れているという考えは馬鹿げていることに注意してください。

ただし、これは、有限、明確かつ効果的なアルゴリズムが可能な限りランダムです。

http://www.vias.org/simulations/simusoft_lincong.html

http://www1.i2r.a-star.edu.sg/~knandakumar/nrg/Tms/Probability/Probgenerator.htm

U_ {k + 1} =(a \ times U_k + b)mod(m + 1)。

小さな値a = 5、b = 1、およびm = 7を選択すると、これが何をしているのかを簡単に確認できます。あなたの頭の中でそれを行うことができるはずです。


これのかなりランダムなバージョン(線形合同ジェネレータ(LCG))があるのだろうか、それは自分の頭で本当に簡単に行うことができますか?a = 1理想的には、a = 2秒が理想的です。(次のコメントでこれまでの私の考え。)
アーロントーマ

((私はa = 1、bプライム、b巧妙に選ばれたものが、より大きなmのより適切な代替品であり、それでもまだうまくいくと思った。それからおそらくそうではないことに気づいた。数値をかなり順番にトラバースするので、b≈m/ 2が答えだと思ったが、2つの位置が交互に連続する(小さな| b–m / 2 | / mの場合)こともあることに気付いた。 b≈m/ 3、それは3つの位置の間で交互に、シーケンシャルである可能性があります。b≈m/ 99のための問題はもうフォームを交互にではないでしょうが、それは1つのモジュロ減算を通じてサイクル〜99個のステップを取るだろう。))
アーロントーマ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.