【问题标题】:What is the range of Random.nextDouble in Scala?Scala 中 Random.nextDouble 的范围是多少?
【发布时间】:2012-10-09 16:27:36
【问题描述】:

Random (http://www.scala-lang.org/api/current/scala/util/Random.html) 的 Scaladoc 页面指定 nextDouble “从该随机数生成器的序列中返回 0.0 到 1.0 之间的下一个伪随机、均匀分布的双精度值。”

很明显,它忽略了“包容性”。例如,值 0.0 和 1.0 可能吗?如果是这样,是哪一个(或两者)?例如,如果我除以这个数字,我真的想确保 0 不是返回值。在其他情况下,我可能不想要 1.0。很明显,这很难通过测试得到,因为大约有 10^15 个值介于 0.0 和 1.0 之间。

它是什么?请注意,由于不是每个人都记得“(”和“[”中的哪一个表示“包含”,所以请直接说“包含 X”。

【问题讨论】:

  • 旁注:1.0 是独占的,但由于浮点数的内部表示,当您对其进行一些算术运算时,可能会发生接近 1.0 的值表示为 1.0...(有一个Java 谜题,但我现在找不到)。

标签: scala random


【解决方案1】:

这是因为scala.util.Randomjava.util.Random (see the source) 的一个非常薄的包装,记录在in sufficient detail

nextDouble 的一般约定是从 0.0d(inclusive)到 1.0d(exclusive)范围内(大约)均匀选择的一个 double 值是伪随机的生成并返回。

【讨论】:

  • nextDouble() 是一个非常重要的函数:这​​需要用语言“scaladocs”本身详细记录。依赖于它是 Java 函数的包装器这一事实,q.v.这是一个非常糟糕的主意,因为肯定有一天它不会基于 Java 函数。无论如何,感谢您的回答!
猜你喜欢
  • 2017-04-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-19
  • 2019-06-20
  • 2023-03-25
相关资源
最近更新 更多