7

.net / c#の標準(?)ランダムジェネレーターを意味します

Random random = new Random(seed);
random.next();

文献には数十または数百の方法があることは知っていますが、.netフレームワークが現在使用している方法を見つけることができませんか?

質問をする理由:確率変数をたくさん描いた場合、同じシーケンスに戻ることはありますか?一部のRNGにはこの望ましくない特性があることを私は知っています。

4

2 に答える 2

11

疑似乱数は、有限の数のセットから等しい確率で選択されます。選択された数は、明確な数学的アルゴリズムを使用して選択されるため、完全にランダムではありませんが、実用的な目的には十分にランダムです。Randomクラスの現在の実装は、DonaldE.Knuthの減算乱数ジェネレーターアルゴリズムの修正バージョンに基づいています。詳細については、DEKnuthを参照してください。「TheArtofComputer Programming、volume 2:SeminumericalAlgorithms」。アディソン-ウェスリー、レディング、マサチューセッツ州、第2版、1981年。

http://msdn.microsoft.com/en-us/library/system.random.aspx

于 2012-06-24T18:50:14.157 に答える
1

すべての計算はシードに基づいています。シードを定義すると、同じシーケンスのメソッドに対して同じ結果が得られます。そうでない場合、デフォルトのシードはEnvironment.TickCountであるため、同じシーケンスのメソッドは、実行ごとに異なる結果を生成します(並行して保証されるわけではありません)。

于 2012-06-24T18:52:45.950 に答える