2014-12-29 35 views
3

我有一個生成隨機數如下功能:如何執行k次函數?

def genRandom(): Double = { 
    //pass 
    return something 
} 

現在,我該怎麼稱呼上面的函數來創建ķ維隨機向量?我一直在想像

(0 to k).foreach { 
    // FIXME Vec.append(getRandom()) 
} 

但這似乎並不奏效。

如何將這個genRandom函數調用k次並創建一個隨機向量?

+4

使用:Vector.fill(10)(的Math.random) –

回答

7

可能方式:

Vector.fill(k)(getRandom()) 

或:

(0 to k).map(_ => getRandom()) 

或:

for (i <- 0 to k) yield getRandom() 
3

注意foreach提供了一個Unit,而不是從應用一些參數(或多個)集合一個函數。如前所述,在Vector上使用map,for-yieldfill。關於後者,還考慮tabulate,其允許生成多維向量;在這種情況下,雖然,

Vector.tabulate(k)(_ => genRandom()) 

對於二維(n倍米)Vector的情況下,

Vector.tabulate(n,m)((_,_) => genRandom())