Страницы

Поиск по вопросам

понедельник, 24 февраля 2020 г.

random заполняет две матрицы одинаковыми значениями

#c_sharp #net


Рандом работает не так как нужно: при каждом вызове функции Random, матрицы заполняются
одинаково

public void Random()
{
    Random random = new Random();

    for (int i = 0; i < N; i++)
    {
        for (int j = 0; j < M; j++)
        {
            matrix[i, j] = random.Next(0, 10);
        }
    }
}

    


Ответы

Ответ 1



По умолчанию, Random использует текущее время, в качестве начального значения в генераторе псевдослучайных чисел. Раз у Вас обе матрицы одинаковые, значит вызовы Random() функции происходят слишком близко по времени. В качестве решения, Вы можете использовать один объект класса Random в обоих вызовах, чтобы исключить подобную ситуацию; т.е. Вам нужно вынести Random в поле класса.

Ответ 2



Как уже упоминалось выше вынесите из метода создание экзмепляра Random, правда это не всегда помогает. Придется добавить в цикл сохранение предыдущего результата генерации, а саму генерацию в цикле: do { генерить newNumber } while(oldNumber == newNumber)

Комментариев нет:

Отправить комментарий