如何生成随机数列表?
这可能是史上最不重要的问题,但它困扰着我。我将如何生成一个n个随机数的列表。我到目前为止:如何生成随机数列表?
def n_rands(n : Int) = {
val r = new scala.util.Random
1 to n map { _ => r.nextInt(100) }
}
哪些工作,但看起来不太Scalarific给我。我接受建议。
编辑
不是因为它的相关的这么多,因为它是有趣和明显回想起来,下面看起来像它的工作原理:
1 to 20 map r.nextInt
但在返回列表中的每个条目的索引也是最后的上限。第一个数字必须小于1,第二个数字小于2,依此类推。我跑了三分四次,发现“嗯,结果总是从0开始......”
我需要为'nextInt'函数提供一个最大值。令人惊讶的是(至少对我来说)这个工作:'Seq.fill(6)(Random.nextInt(100))' – Malvolio 2012-02-01 23:47:50
这并不奇怪,请参阅Random companion对象:http://www.scala-lang.org/api /current/index.html#scala.util.Random – Nicolas 2012-02-02 07:16:40
我的意思,我很惊讶,它是'Random.nextInt(100)'被解释为*匿名函数*我想这是和不是int值表示我认为它看起来像。 – Malvolio 2012-02-02 08:51:42
如何:
import util.Random.nextInt
Stream.continually(nextInt(100)).take(10)
也许这是有目共睹的其他人,但我需要做的'VAL R =新util.Random; Stream.continually(r.nextInt).take(10)'让代码工作。 – pr1001 2012-02-01 11:21:56
我把它写成Stream.continually(r.nextInt(100))。take(10).toList' - '.toList'可能是不必要的,但'r.'不是。 – Malvolio 2012-02-01 11:23:07
对不起,我曾导入util.Random.nextInt作为@Nicholas猜测。对于更多的实用工具,你可以在Stream中创建一个val。(nextInt(100))。 – 2012-02-01 11:47:54
关于你的编辑,
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
,因为它更准确地表示你在做什么。
你应该做的第一件事是让'r'一个'val'而不是'var'。 – Jesper 2012-02-01 11:16:59
@Jesper - 谢谢。 – Malvolio 2012-02-01 11:24:12
@Jesper - 五年后,我终于做我应该做的第一件事...... – Malvolio 2017-07-19 18:36:21