2011-08-23 65 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)