如何生成随机数列表?

时间:2012-02-01 11:12:31

标签: scala

这可能是史上最不重要的Scala问题,但这让我感到烦恼。我如何生成n个随机数列表。到目前为止我所拥有的:

def n_rands(n : Int) = {
 val r = new scala.util.Random
 1 to n map { _ => r.nextInt(100) } 
}

哪个有效,但对我来说看起来不太明显。我愿意接受建议。

修改

不是因为它的相关性非常重要而且回想起来很明显,以下看起来很有效:

1 to 20 map r.nextInt

但是返回列表中每个条目的索引也是最后一个条目的上限。第一个数字必须小于1,第二个数字必须小于2,依此类推。我跑了三四次,注意到“嗯,结果总是从0开始......”

3 个答案:

答案 0 :(得分:89)

您可以使用Don's solution或:

Seq.fill(n)(Random.nextInt)

请注意,您不需要创建新的Random对象,您可以使用默认的随播对象Random,如上所述。

答案 1 :(得分:33)

怎么样:

import util.Random.nextInt
Stream.continually(nextInt(100)).take(10)

答案 2 :(得分:5)

关于你的编辑,

nextInt可以将Int参数作为随机数的上限,因此1 to 20 map r.nextInt1 to 20 map (i => r.nextInt(i))相同,而不是更有用的编译错误。

1 to 20 map (_ => r.nextInt(100))按照您的意图行事。但最好使用Seq.fill,因为这样可以更准确地表示您正在做的事情。