使用Scala生成随机序列

时间:2020-04-14 02:19:23

标签: scala sequence

我需要从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)

有人可以帮助我找出正确的方法吗?

1 个答案:

答案 0 :(得分:5)

因此,您需要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()方法(Scala 2.13),事情就不会那么干净了。

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

请注意,实际上它的底限为0.0,而不是所需的0.0000000001。您输入的条目太小的可能性很小,尤其是仅采集100个样本时。不过,您可以采取一些步骤来确保这种情况不会发生。

相关问题