重複の可能性が返されました:
c# - getting the same random number repeatedly
Random number generator not working the way I had planned (C#)乱数生成同じ番号は
私はint型のキューを構築する方法があります:
public Queue<int> generateTrainingInts(int count = 60)
{
Queue<int> retval = new Queue<int>();
for (int i = 0; i < count; i++)
{
retval.Enqueue(JE_Rand.rInt(2001, 100));
}
return retval;
}
JE_Rand .rInt()は、delegat私はgenerateTrainingIntsを呼び出すときに毎回同じ番号がエンキューされます。しかし、rIntを、ローカルインスタンス(上記で定義した関数スコープ)の代わりにRandomクラスの静的インスタンスを使用するように変更すると、正しく動作するように見えます(ランダムな整数をエンキューします)。誰がなぜこれが起こるのか知っていますか?
編集: 私の質問を完全に読まなかった回答者 あなたが指摘したように、私はなぜこのようなことが起こるのかをよく説明しています。私は同じ数字で生成された問題の解決法を探しているわけではありません。あなたの熱意に感謝します:)私は最初の実装が概念的に私にとって意味をなさされたので、本当にこのようなことを理解したいだけです。
-httpようrealted質問を見てください...重複しているようだ://stackoverflow.com/questions/1437825/random-number-generation-in-c –
'Random'オブジェクトが初期化されたので、それが起こります'環境。GetTickCount'は、ミリ秒タイマーである。つまり、同じ乱数の中で 'Random'コンストラクタを2回呼び出すと、同じ初期値を得ることになります。 –
randが同じシードでインスタンス化されると(たとえば、あなたのケースではDateTime.Now.Millisecond)、同じシーケンスの値が返されます。一度インスタンス化して(静的変数に格納する)、または毎回異なるシードを使用する必要があります。 – AFract