2009-03-06 13 views
0

このような方法で簡単にPRNGを構築することはできませんか?それはなぜ行われていないのですか?擬似乱数ジェネレータを計算可能な通常の数値

つまり、私が知っている限り、単純にシードnを取るPRNGを持つことができます。ランダムビットを求めると、計算可能な正規数の2進数のn番目の桁をとり、nをインクリメントします。

私が最初に考えたのは、おそらく計算可能な正規の数字が見つからなかったということでしたが、haveです。残りの考えには、PRNGの性質がありますが、そのような方法にはないことに慣れていないか、何らかの形で実用的でないか、他の方法で凌駕されていないという理由があります。

+0

この記事をご覧ください:http://www.emis.de/journals/EM/expmath/volumes/11/11.4/pp527_546.pdf – dirkgently

+0

PSRGとは何ですか?あなたはPRNGを意味しますか? – hop

+0

はい、はいです。私はそれをどのように混ぜ合わせたのか分かりませんが、私はそうしました。私は数時間で紙を見るでしょう - 私は外に出なければなりません。 –

答えて

3

これは、出力を実際に簡単に予測できるようにします。

たとえば、整数0x54a30b7fを生成するとします。 4GiBのpi(またはランダムノイズまたは実際の通常の数)がある場合、その特定の整数が1つだけ(またはおそらく少数)発生する可能性があり、将来のすべての数値を合理的に高い確率で予測できます。これは、暗号的に強いPRNGの場合に重大な問題である。単純なシーケンシャルスキャンの代わりにいくつかの機能を使用する場合、私はちょうどそれがそれが自分自身の権利でPRNGになるには十分に難しい場合は、関数に従わなければならない。

あなたのジェネレータの暗号強度が心配されていない場合は、はるかにコンパクトな乱数生成方法があります。例えば、は、4GiBルックアップテーブルを必要とせずにはるかに長い期間を有する。

+0

まず、pi(sqrt(2)やeのような他の大部分の定数とともに)は、正常であることが証明されていません。第2に、計算可能であり、さらに重要なことに、n-1を計算することなくpiのn番目の桁を計算し、ルックアップテーブルを不要にすることができます。新しいコメントでもっと言います。 –

+0

申し訳ありませんが、ポストサイズに限ります。第二に、通常の数を持つことは、展開で無数の回数が発生することです。さらに、他の数字と同じようになるでしょう。したがって、通常の数の完全または任意の大きな範囲が与えられれば、推測することはできません。 –

+0

...しかし、あなたのシードは32ビットよりも大きくなければなりません(それ以外の場合は最初の4GiBのみを使用しています)。シードの生成は十分に安全でなければ、単純に攻撃することはできません。 –

関連する問題