-1

我想要一个加密随机双精度数,因为RNGCryptoServiceProvider在 .NET 6 中已过时这个问题不相关如何在 0 和 1 之间生成加密安全双精度数?

RandomNumberGenerator推荐,那么是否RandomNumberGenerator有任何类似Random.NextDouble的方法会返回双精度等于或大于 0.0 且小于 1.0 ?

4

1 回答 1

0

对于 .NET 6 及更高版本

using System.Security.Cryptography;

static double NextDouble()
{
    ulong nextULong = BitConverter.ToUInt64(RandomNumberGenerator.GetBytes(sizeof(ulong)));

    return (nextULong >> 11) * (1.0 / (1ul << 53));
}

例如

double randomDobule = NextDouble();
Console.WriteLine(randomDobule);

// 0.9007393363493708
于 2022-02-18T23:56:21.517 回答