为什么这个随机数发生器不是随机的?

1 .net c# random wpf

可能的重复:
为什么我的随机数生成器在C#中不是随机的?
随机数发生器不按我计划的方式工作(C#)

我有这种方法来计算随机值:

private double getMetrics(SourceFile sf)
        {
            Random r = new Random();
            return (r.NextDouble());
        }
Run Code Online (Sandbox Code Playgroud)

但是它总是返回相同的数字,在我的情况下是0.41500350386603

为什么????

Hei*_*nzi 9

new Random()使用当前时间作为种子值.因此,如果您在很短的时间内多次调用此函数,它可能会返回相同的值.以下是MSDN的解释:

默认种子值源自系统时钟并具有有限的分辨率.因此,通过调用默认构造函数紧密连续创建的不同Random对象将具有相同的默认种子值,因此将生成相同的随机数集.使用单个Random对象生成所有随机数可以避免此问题.