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