public void Mutate(float mutationRate) { for (var rowIndex = 0; rowIndex < rowCount; rowIndex++) { for (var columnIndex = 0; columnIndex < columnCount; columnIndex++) { var rand = SyncRandom.NextFloat(); if (rand < mutationRate) { // Debug.WriteLine(string.Format("mutated {0}:{1}", rowIndex, columnIndex)); matrix[rowIndex, columnIndex] += SyncRandom.NextGaussian() / 5; if (matrix[rowIndex, columnIndex] > 1) { matrix[rowIndex, columnIndex] = 1; } else if (matrix[rowIndex, columnIndex] < -1) { matrix[rowIndex, columnIndex] = -1; } } } } }
public void Randomize() { for (var rowIndex = 0; rowIndex < rowCount; rowIndex++) { for (var columnIndex = 0; columnIndex < columnCount; columnIndex++) { matrix[rowIndex, columnIndex] = SyncRandom.NextFloat(-1, 1); } } }