重複の可能性:
1 つの乱数のみを生成する乱数ジェネレーター
私の作品には、次のように一連の単語からランダムに選択して文を生成する方法があります。
private string generateTest(string test)
{
test = test.ToLower();
string sentence = "";
for (int c = 0; c < 30; c++)
{
Random r = new Random();
int len = r.Next(3, 7);
string word = "";
for (int i = 0; i < len; i++)
{
word += test[r.Next(0, test.Length)];
}
sentence += word + ' ';
}
return sentence;
}
ただし、問題は、最初の 6 単語がランダムに生成された後、後続のすべての世代がまったく同じものになることです。例えば
aqaaaz、qqzaq、aqqza、azqq、aazzq、aqqa、azzzq、azzzq、azzzq、azzzq、azzzq、azzzq、azzzq、azzzq、azzzq、azzzq、azzzq、azzzq、azzzq、azzzq、azzzq、azzzq、azzzq、azzzq、azzzq。 ...
その後、プログラムを再起動しても同じことが当てはまります。これは、自動最適化を行っている .NET ランタイムであると考えています。誰かがよりよく説明できますか?この問題を回避するにはどうすればよいですか?