相关疑难解决方法(0)

斯卡拉Pi的蒙特卡罗计算

假设我想用蒙特卡罗模拟计算Pi作为练习.

我正在编写一个函数,它(0, 1), (1, 0)随机选取一个正方形中的一个点并测试该点是否在圆内.

import scala.math._
import scala.util.Random

def circleTest() = {
  val (x, y) = (Random.nextDouble, Random.nextDouble)
  sqrt(x*x + y*y) <= 1
}
Run Code Online (Sandbox Code Playgroud)

然后我正在编写一个函数,它将测试函数和试验次数作为参数,并返回测试结果为真的试验部分.

def monteCarlo(trials: Int, test: () => Boolean) =
  (1 to trials).map(_ => if (test()) 1 else 0).sum * 1.0 / trials
Run Code Online (Sandbox Code Playgroud)

......我可以计算Pi

monteCarlo(100000, circleTest) * 4
Run Code Online (Sandbox Code Playgroud)

现在我想知道monteCarlo功能是否可以改进.你怎么写monteCarlo高效和可读?

例如,由于试验的数量很大,是否值得使用viewiterator代替Range(1, trials)reduce代替mapsum

scala montecarlo

10
推荐指数
2
解决办法
1512
查看次数

标签 统计

montecarlo ×1

scala ×1