使用Scala生成随机序列



我需要获得一个从10^-10到10^10的100个值的随机序列,并使用Scala存储到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()方法的第二个参数是"按名称",即对每个元素重新求值。


更新

如果没有.between()方法(Scala2.13(,事情就不会那么干净

Array.fill(100)(rndm.nextDouble())
.map(_ * math.pow(10,10))

注意,这实际上具有0.0的楼层而不是期望的0.0000000001。你不太可能有一个太小的条目,尤其是在只采集100个样本的情况下。尽管如此,你还是可以采取一些措施来确保这种情况不会发生。

最新更新