解决方法
编辑
Random.NextDouble()不会给出预期的结果!
正如Kyle在下面的评论中建议的那样,Random.NextDouble()的实现将一个int映射到间隔[0.0,1.0],有效地使我的代码等同于r.Next(0,Int32.MaxValue)== 0添加更多零将不会影响结果为false的概率.
使用其他答案之一,或使用此代码从System.Random生成ulong(范围0-18446744073709551615).
var r = new Random(); var bytes = new byte[8]; r.NextBytes(bytes); ulong result = BitConverter.ToUInt64(bytes,0);
原来的答案
警告:不会按预期工作,不要使用!仅供上下文使用.
使用Random.NextDouble():结果是0.0和1.0之间的双重
var r = new Random(); var probablyFalseBool = r.NextDouble() < 0.0000000000001;
如果需要,改变零的数量.