Cálculo de Monte Carlo de Pi en Scala

Supongamos que me gustaría calcular Pi con la simulación de Monte Carlo como ejercicio.

Estoy escribiendo una función, que selecciona un punto en un cuadrado(0, 1), (1, 0) al azar y prueba si el punto está dentro del círculo.

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

def circleTest() = {
  val (x, y) = (Random.nextDouble, Random.nextDouble)
  sqrt(x*x + y*y) <= 1
}

Luego estoy escribiendo una función, que toma como argumentos la función de prueba y el número de pruebas y devuelve la fracción de las pruebas en las que se encontró que la prueba era verdadera.

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

... y puedo calcular Pi

monteCarlo(100000, circleTest) * 4

Ahora me pregunto simonteCarlo La función se puede mejorar. Como escribiriasmonteCarlo eficiente y legible?

Por ejemplo, dado que el número de ensayos es grande, vale la pena usar unview oiterator en lugar deRange(1, trials) yreduce en lugar demap ysum ?

Respuestas a la pregunta(6)

Su respuesta a la pregunta