#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)
Комментариев нет:
Отправить комментарий