源码
from pyspark.sql import SparkSession
from random import random
from operator import add
def inside(p):
x, y = random(), random()
return x*x + y*y <= 1
def Pi_estimation(spark):
sc = spark.sparkContext
NUM_SAMPLES = 10000
count = sc.parallelize(xrange(0, NUM_SAMPLES)) \
.filter(inside).count()
print("Pi is roughly %f " % (4.0 * count / NUM_SAMPLES))
if __name__ == "__main__":
spark = SparkSession \
.builder \
.config("spark.some.config.option", "some-value") \
.getOrCreate()
Pi_estimation(spark)
思路
利用蒙特卡罗算法,在一个边长为2的正方形内画个半径为1的圆。正方形的面积 S1=4,圆的面积 S2=πr^2=π现在只需要计算出S2就可以知道π,这里取圆心为坐标轴原点,在正方向中不断的随机选点,总共选n个点,计算在圆内或圆上的点的数目为count,则 S2=S1*count/n,然后就得出π的取值
[蒙特卡罗算法是什么](https://www.zhihu.com/question/20254139)