我需要获取从 10^-10 到 10^10 的 100 个值的随机序列,并Array使用 Scala存储到一个。我尝试跟随,但没有用
Array(scala.math.pow(10,-10).doubleValue to scala.math.pow(10,10).intValue by scala.math.pow(10,5).toLong)
Run Code Online (Sandbox Code Playgroud)
谁能帮我弄清楚如何正确地做到这一点?
所以你需要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
// . . .
Run Code Online (Sandbox Code Playgroud)
这是有效的,因为该fill()方法的第二个参数是“按名称”,即为每个元素重新评估。
更新
如果您没有该.between()方法(Scala 2.13),事情就不那么干净了。
Array.fill(100)(rndm.nextDouble())
.map(_ * math.pow(10,10))
Run Code Online (Sandbox Code Playgroud)
请注意,这实际上有一个楼层0.0而不是所需的0.0000000001。条目太小是不太可能的,尤其是在仅采集 100 个样本时。不过,您可以采取一些步骤来确保不会发生这种情况。