Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Random.NextDouble方法能否返回';1.0';?_C#_Random_Numbers - Fatal编程技术网

C# Random.NextDouble方法能否返回';1.0';?

C# Random.NextDouble方法能否返回';1.0';?,c#,random,numbers,C#,Random,Numbers,在Random.NextDouble中写着 返回一个介于0.0和1.0之间的随机数。 我想问,在任何情况下,它是否可能返回1?否-根据文档,零包括在内,但1不包括: 大于或等于0.0且小于1.0的双精度浮点数 我不确定我是否理解这些投票。您是否阅读了该链接中文档的下一句话?我不禁想知道它是否可以返回介于1E-323和1E-17之间的值。有人可能会认为它以某种方式生成了一个带有固定“刻度”的随机“尾数”。另一件事:严格小于1.0的数字可能会以通常的字符串表示形式显示为1。例如double d=0.

Random.NextDouble
中写着

返回一个介于0.0和1.0之间的随机数。


我想问,在任何情况下,它是否可能返回
1

否-根据文档,零包括在内,但1不包括:

大于或等于0.0且小于1.0的双精度浮点数


我不确定我是否理解这些投票。您是否阅读了该链接中文档的下一句话?我不禁想知道它是否可以返回介于
1E-323
1E-17
之间的值。有人可能会认为它以某种方式生成了一个带有固定“刻度”的随机“尾数”。另一件事:严格小于
1.0
的数字可能会以通常的字符串表示形式显示为
1
。例如
double d=0.99999999978;控制台写入线(d<1.0);/*“True”*/Console.WriteLine(d);/*“1”*/
@JeppeStigNielsen这在理论上可能发生,但在当前的
Random.NextDouble
实现中不会发生,因为它只使用大约31或32位,而不是完整的53位。也不使用子窗体。这很简单,就像是
randomInt(0..2^31-1)/2^31
@CodesInChaos有趣。我在想这样的事情。我做了一些实验,它看起来像是
myRandom.NextDouble()*(Math.Pow(2.0,31.0)-1.0)
总是给出一个整数。然而,从
BitConverter.GetBytes(myRandom.NextDouble())
中检测是不容易的,因为该因子似乎不是2的幂,而是比2的幂小1。@Jeppe他们一定实现了
Next(n)
类似于
NextDouble()*n
。这会导致一些
n
产生巨大的偏差,例如。