0

可能重复:
为什么这个方法每次都返回相同的随机字符串?
随机的不是随机的

我在这段代码中有奇怪的行为。

public void InitPopulation()
{
    for (int i = 0; i < PopSize; i++)
    {
        var builder = new StringBuilder();
        var random = new Random();

        for (int j = 0; j < Target.Length; j++)
        {
            builder.Append(Convert.ToChar(Convert.ToInt32(Math.Floor(26 * random.NextDouble() + 65))));
        }

                        vector.Add(new GaStruct() { Fitness = 0, StrValue = builder.ToString().ToLower() });
        builder.Clear();
    }
}

这段代码给了我 5 个完全相同的字符串!

如果我添加Thread.Sleep这样的:

public void InitPopulation()
{
    for (int i = 0; i < PopSize; i++)
    {
        var builder = new StringBuilder();
        var random = new Random();

        for (int j = 0; j < Target.Length; j++)
        {
            builder.Append(Convert.ToChar(Convert.ToInt32(Math.Floor(26 * random.NextDouble() + 65))));
        }

        **System.Threading.Thread.Sleep(20);**
        vector.Add(new GaStruct() { Fitness = 0, StrValue = builder.ToString().ToLower() });
        builder.Clear();
    }
}

一切正常,所有字符串都是随机的。

4

0 回答 0