我有一个生成随机数的函数,如下所示:
def genRandom(): Double = {
//pass
return something
}
现在,如何调用上面的函数来创建k维随机向量?我一直在想
(0 to k).foreach {
// FIXME Vec.append(getRandom())
}
但这似乎不起作用。
如何调用此genRandom
函数k次并从中创建一个随机向量?
答案 0 :(得分:7)
可能的方法:
Vector.fill(k)(getRandom())
或:
(0 until k).map( _ => getRandom())
或:
for ( i <- 0 until k ) yield getRandom()
答案 1 :(得分:3)
请注意foreach
提供Unit
,而不是将某些参数应用于函数的集合。如上所述,在map
上使用for-yield
,fill
或Vector
。关于后者,还要考虑tabulate
,它允许生成多维向量;但在这方面,
Vector.tabulate(k)(_ => genRandom())
对于二维(n次m)Vector
的情况,
Vector.tabulate(n,m)((_,_) => genRandom())