可能重复:
Why does it appear that my random number generator isn't random in C#?
Random number generator not working the way I had planned (C#)
我有这种方法来计算随机值:
private double getMetrics(SourceFile sf)
{
Random r = new Random();
return (r.NextDouble());
}
然而,它总是返回相同的数字,在我的情况下为0.41500350386603
为什么????
答案 0 :(得分:9)
new Random()
使用当前时间作为种子值。因此,如果您在很短的时间内多次调用此函数,它可能会返回相同的值。以下是MSDN的解释:
默认种子值源自系统时钟并具有有限的分辨率。因此,通过调用默认构造函数紧密连续创建的不同Random对象将具有相同的默认种子值,因此将生成相同的随机数集。使用单个Random对象生成所有随机数可以避免此问题。
答案 1 :(得分:0)
只需声明方法中的随机数,每次调用方法时,都会创建新数字,除非它被处理并重新创建。重新创建时,数字将与重新开始相似。如果您想要“更多”唯一数字,可以在创建随机数之前等待几毫秒。如果你想要非常独特的数字,GuID会更好。