C # Случайное поколение

Я только что прочитал эту статью в Интернете: C # Corner и C # Corner и его статья (разработчик программного обеспечения с более чем 13-летним опытом) рекомендовали использовать System.Random следующим образом:

 private int RandomNumber(int min, int max) { Random random = new Random(); return random.Next(min, max); } 

Разве это не давало ему одинакового числа каждый раз?

Редактировать:
Итак, мой вопрос станет следующим: как Random выбирает свое семя? постоянное или текущее значение времени?

Спасибо

Это даст тот же результат, когда метод будет часто вызываться между короткими интервалами времени. Это происходит потому, что семя Random s инициализируется текущим значением времени. Это также является причиной того, что у многих людей есть проблема вида, что случайность вообще не случайна.

BTW это не Math.Random, но System.Random


После вашего редактирования, вот некоторая информация о том, как случайная инициализация. Информация взята из ссылки выше.

Генерация случайного числа начинается с начального значения. Если одно и то же семя используется повторно, генерируется одна и та же серия чисел. Один из способов создания разных последовательностей состоит в том, чтобы сделать начальное значение зависящим от времени, тем самым создавая разные серии с каждым новым экземпляром Random. По умолчанию безразмерный конструктор classа Random использует системные часы для генерации своего начального значения, тогда как его параметризованный конструктор может принимать значение Int32 в зависимости от количества тиков в текущее время. Однако, поскольку часы имеют конечное разрешение, использование конструктора без параметров для создания разных случайных объектов в непосредственной последовательности создает генераторы случайных чисел, которые производят идентичные последовательности случайных чисел.

Вы должны только инициализировать семя один раз, а затем повторно использовать его:

 private Random random = new Random(); private int RandomNumber(int min, int max) { return random.Next(min, max); } 

Нет, потому что new Random() будет инициализироваться с текущим временем в качестве семени. Тем не менее вы должны сохранить экземпляр random и повторно использовать его.

Может быть. Random создается без явных семенных семян, основанных на текущем времени. Если вы вызвали RandomNumber достаточно быстро, вы бы получили тот же номер изредка.

Однако ваша интуиция верна. Неразумно создавать новый Random объект каждый раз, когда вам нужен новый номер. Вы должны создать один экземпляр и использовать его.