这可能是史上最不重要的Scala问题,但这让我感到困扰.我如何生成n个随机数列表.到目前为止我所拥有的:
def n_rands(n : Int) = {
val r = new scala.util.Random
1 to n map { _ => r.nextInt(100) }
}
Run Code Online (Sandbox Code Playgroud)
哪个有效,但对我来说看起来不太明显.我愿意接受建议.
编辑
并不是因为它的相关性非常重要而且回想起来很明显,以下看起来很有效:
1 to 20 map r.nextInt
Run Code Online (Sandbox Code Playgroud)
但是返回列表中每个条目的索引也是最后一个条目的上限.第一个数字必须小于1,第二个数字必须小于2,依此类推.我跑了三四次,注意到"嗯,结果总是从0开始..."
Nic*_*las 92
您可以使用Don的解决方案或:
Seq.fill(n)(Random.nextInt)
Run Code Online (Sandbox Code Playgroud)
请注意,您不需要创建新Random
对象,您可以使用默认伴随对象Random,如上所述.
Don*_*zie 35
怎么样:
import util.Random.nextInt
Stream.continually(nextInt(100)).take(10)
Run Code Online (Sandbox Code Playgroud)
关于你的编辑,
nextInt
可以将Int
参数作为随机数的上限,因此1 to 20 map r.nextInt
是相同的1 to 20 map (i => r.nextInt(i))
,而不是更有用的编译错误.
1 to 20 map (_ => r.nextInt(100))
做你想要的.但它最好使用,Seq.fill
因为它更准确地代表你正在做的事情.