Есть массив который заполняется образцами данного класса :
protected class Neuron // Класс обозначающий нейрон
{
double[] Weights; // Веса всех входов
Random r = new Random();
public Neuron(int InputCount)
{
Weights = new double[InputCount]; // Создание масива весов
for (int w = 0; w < InputCount; w++) // Заполнение весов случайными значениями
Weights[w] = r.NextDouble();
}
Но почему-то у всех нейронов в данном массиве массив Weights одинаковый, можете объяснить почему так происходит?
Класс Random в .NET инициалируется по системному времени (если создавать без параметра seed). В таком случае если создавать экземпляры Random достаточно быстро друг за другом, они инициализируются одним значением и генерируют одну последовательность. Что бы избежать этого создавайте только один экземпляр Random.
От @Андрей NOP: Вышесказанное актуально только для .NET Framework, и неактуально для .NET Core.
Сборка персонального компьютера от Artline: умный выбор для современных пользователей