Работа переменной Random [дубликат]

144
07 марта 2022, 15:20
На этот вопрос уже дан ответ здесь:
Начальное значение Random() в C# (1 ответ)
Закрыт 2 года назад.

Есть массив который заполняется образцами данного класса :

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 одинаковый, можете объяснить почему так происходит?

Answer 1

Класс Random в .NET инициалируется по системному времени (если создавать без параметра seed). В таком случае если создавать экземпляры Random достаточно быстро друг за другом, они инициализируются одним значением и генерируют одну последовательность. Что бы избежать этого создавайте только один экземпляр Random.

От @Андрей NOP: Вышесказанное актуально только для .NET Framework, и неактуально для .NET Core.

READ ALSO
ОШИБКА 400 BAD REQUEST

ОШИБКА 400 BAD REQUEST

Всем привет! Я запускаю сайт Aspnet framework на iis сервере

69
Вывод атрибутов XML в три ListBox-a

Вывод атрибутов XML в три ListBox-a

Есть некоторый XML документ

66
Двухсторонняя сортировка выбором Double selection sort

Двухсторонняя сортировка выбором Double selection sort

У кого либо может быть есть работающий код на C# (простыми конструкциями сделанный) с двухсторонней сортировкой выбором (Double selection sort)? Можете...

73