このコードには奇妙な動作があります。
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();
}
}
すべて問題ありません。すべての文字列はランダムです。