1.采用蒙特卡洛概率的方法计算Pi圆周率
以中心点为圆心,圆的半径为1,圆的面积之比与正方形的面积之比为:π/4那么我们可以通过落入圆形中的点数占的比例来估计π的值
利用Spark进行代码实现:
object Demo13_Pi {
def main(args: Array[String]): Unit = {
val list: Seq[Int] = 0 to 1000000
//创建spark 环境
val conf: SparkConf = new SparkConf()
.setMaster("local")
.setAppName("Pi")
val spark = new SparkContext(conf)
val listRdd: RDD[Int] = spark.parallelize(list)
//模拟生成点
val xyRDD = listRdd.map(i => {
val x: Double = Random.nextDouble() * 2 - 1
val y: Double = Random.nextDouble() * 2 - 1
(x, y)
})
val filterRDD = xyRDD.filter {
case (x: Double, y: Double) => {
x * x + y * y <= 1
}
}
val count = filterRDD.count()
//带入公式求Pi
val pi = count.toDouble / list.size * 4
println(pi)
}
}
想要提高Pi的精确度需要更多的点进行模拟。