c#Double.MinValue 和 Double.MaxValue 之间的随机数

Wry*_*ymn 2 c# random double min infinite

我已经用谷歌搜索过了,但还没有答案。

所以问题是,我需要创建随机生成器 API 如下:

public static Double Range(Double minValue, Double maxValue)
{
     return random.NextDouble() * (maxValue - minValue) + minValue; // random is just System.Random
}
Run Code Online (Sandbox Code Playgroud)

一切正常,直到我将Double.MinValueDouble.MaxValue放入参数中,因为它生成“无限”无效双精度值(因为操作产生的值超出 64 位双精度值范围)。

有没有办法编写代码,以便即使使用Double.MinValueDouble.MaxValue也可以处理和生成有效的双精度值

Feb*_*bre 5

考虑将计算随机双精度的逻辑更改为类似

private static Double Range(Double minValue, Double maxValue)
{    
    var x = random.NextDouble();

    return x * maxValue + (1 - x) * minValue;
}
Run Code Online (Sandbox Code Playgroud)

你失败的原因是因为double.MinValue会是负面的,因此如果你这样做,maxValue - minValue你本质上就是在做double.MaxValue * 2.

  • 您不会将“new Random()”放入这样的方法中,而是将其作为参数传递。 (2认同)