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

c# Random number between Double.MinValue and Double.MaxValue

我已经搜索 google 了,但还没有答案。

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

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

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

有没有办法编写代码,使其即使在 Double.MinValueDouble.MaxValue 时也能处理并生成有效的双精度数都用过?

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

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

    return x * maxValue + (1 - x) * minValue;
}

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