2011-08-23 92 views
6

我必須生成一些隨機數並對它們進行求和。像使用斯卡拉函數生成的值生成列表

result = generateList(range(0, max), generatorFunctionReturningInt()).foreach(sum _) 

如果generateList東西產生List與= max和價值觀通過generatorFunctionReturningInt

產生的大小,也可以是這樣的

result = range(0, max).map(generatorFunctionReturningInt).foreach(sum _) 

回答

4

只需

(0 to max).map(_ => (new util.Random).nextInt(max)).sum 

其中max定義了號碼數字和隨機範圍。

foreach方法打算用於與什麼都不返回的副作用函數(如println)(Unit)。

0

的foreach不返回結果,使用地圖,而不是:

val result = Range (0, max).map (generatorFunctionReturningInt).map (sum _) 

具體而言,總和已經預先定義好了,不是嗎?

val result = Range (0, max).map (generatorFunctionReturningInt).sum 

運行的代碼(大家都喜歡的工作代碼)

val result = Range (0, 15).map (3 + _).sum 
result: Int = 150 

對於這個簡單的情況下,它是一樣的Range (3, 18).sum

14

這個怎麼樣?

Stream.continually(generatorFunctionReturningInt()).take(max).sum 
9

各種集合類型的伴侶對象都有一些方便的工廠方法。試試:

Seq.fill(max)(generate)