Конструктор без параметров Random
уже использует текущее время в качестве начального значения.В нем используются временные отметки, используемые внутри для представления DateTime
.
. Проблема с этим подходом, однако, заключается в том, что тактовые часы работают очень медленно по сравнению с тактовой частотой процессора.Если вы создаете новый экземпляр Random
каждый раз, когда вам нужно случайное значение, возможно, часы не тикают между двумя вызовами, создавая одно и то же случайное число дважды.
Вы можете просто решитьЭта проблема создается одним экземпляром Random
.
public class TempUtil {
private static readonly Random random = new Random();
public string MakeUniqueFileName()
{
return @"C:\windows\temp\" + random.NextDouble() + ".tmp";
}
}
. Это приведет к созданию очень хороших случайных чисел.
Кстати
System.IO.Path.GetTempFileName()
автоматически создает пустой временный файл с уникальным именем и возвращает полный путь к этому файлу.