使用 Scala 生成随机序列
Generating a random sequence using Scala
我需要使用 Scala 获取从 10^-10 到 10^10 的 100 个值的随机序列并存储到 Array
。我试过跟随但没成功
Array(scala.math.pow(10,-10).doubleValue to scala.math.pow(10,10).intValue by scala.math.pow(10,5).toLong)
谁能帮我弄清楚如何正确执行此操作?
因此您需要 fill()
包含 Random
个元素的数组。
import scala.util.Random
val rndm = new Random(1911L)
Array.fill(100)(rndm.between(math.pow(10,-10), math.pow(10,10)))
//res0: Array[Double] = Array(6.08868427907728E9
// , 3.29548545155816E9
// , 9.52802903383275E9
// , 7.981295238889314E9
// , 1.9462480080050848E9
// . . .
之所以有效,是因为 fill()
方法的第二个参数是 "by-name",即对每个元素重新计算。
更新
如果您没有 .between()
方法 (Scala 2.13),事情就不会那么干净了。
Array.fill(100)(rndm.nextDouble())
.map(_ * math.pow(10,10))
请注意,这实际上有 0.0
的下限,而不是所需的 0.0000000001
。您的条目不太可能太小,尤其是在仅采集 100 个样本时。尽管如此,您还是可以采取一些措施来确保这种情况不会发生。
我需要使用 Scala 获取从 10^-10 到 10^10 的 100 个值的随机序列并存储到 Array
。我试过跟随但没成功
Array(scala.math.pow(10,-10).doubleValue to scala.math.pow(10,10).intValue by scala.math.pow(10,5).toLong)
谁能帮我弄清楚如何正确执行此操作?
因此您需要 fill()
包含 Random
个元素的数组。
import scala.util.Random
val rndm = new Random(1911L)
Array.fill(100)(rndm.between(math.pow(10,-10), math.pow(10,10)))
//res0: Array[Double] = Array(6.08868427907728E9
// , 3.29548545155816E9
// , 9.52802903383275E9
// , 7.981295238889314E9
// , 1.9462480080050848E9
// . . .
之所以有效,是因为 fill()
方法的第二个参数是 "by-name",即对每个元素重新计算。
更新
如果您没有 .between()
方法 (Scala 2.13),事情就不会那么干净了。
Array.fill(100)(rndm.nextDouble())
.map(_ * math.pow(10,10))
请注意,这实际上有 0.0
的下限,而不是所需的 0.0000000001
。您的条目不太可能太小,尤其是在仅采集 100 个样本时。尽管如此,您还是可以采取一些措施来确保这种情况不会发生。