2014-12-29 3 views
3

У меня есть функция, которая генерирует случайные числа следующим образом:Как выполнить функцию k раз?

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

Теперь, как я называю выше функцию для создания K одномерный случайного вектора? Я думал, что

(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, а не коллекция от применения некоторых аргумент (ы) для функция. Как указано выше, используйте map, for-yield или fill по телефону Vector. В последнем случае рассмотрим также tabulate, который позволяет генерировать многомерные векторы; В этом контексте, хотя,

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

Для случая двух одномерных (п раз м), Vector

Vector.tabulate(n,m)((_,_) => genRandom()) 
Смежные вопросы