我想要一个加密随机双精度数,因为RNGCryptoServiceProvider
在 .NET 6 中已过时这个问题不相关如何在 0 和 1 之间生成加密安全双精度数?
RandomNumberGenerator
推荐,那么是否RandomNumberGenerator
有任何类似Random.NextDouble
的方法会返回双精度等于或大于 0.0 且小于 1.0 ?
我想要一个加密随机双精度数,因为RNGCryptoServiceProvider
在 .NET 6 中已过时这个问题不相关如何在 0 和 1 之间生成加密安全双精度数?
RandomNumberGenerator
推荐,那么是否RandomNumberGenerator
有任何类似Random.NextDouble
的方法会返回双精度等于或大于 0.0 且小于 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