【问题描述】
求解圆周率可以采用蒙特卡罗方法,在一个正方形中撒点,根据在 1/4 圆内点的数量占总撒点数的比例计算圆周率值。
请以 123 作为随机数种子,获得用户输入的撒点数量,编写程序输出圆周率的值,保留小数点后 6 位。
【输入形式】
【输出形式】
【样例输入】
输入:"1024"
【样例输出】
输出:"3.218750"
【问题描述】
求解圆周率可以采用蒙特卡罗方法,在一个正方形中撒点,根据在 1/4 圆内点的数量占总撒点数的比例计算圆周率值。
请以 123 作为随机数种子,获得用户输入的撒点数量,编写程序输出圆周率的值,保留小数点后 6 位。
【输入形式】
【输出形式】
【样例输入】
输入:"1024"
【样例输出】
输出:"3.218750"
import numpy as np
def monte_carlo(total_points):
num_circle_points = 0
x_list = []
y_list = []
np.random.seed(123)
for _ in range(total_points):
rand_x = np.random.uniform(0, 1, size=1)
rand_y = np.random.uniform(0, 1, size=1)
x_list.append(rand_x)
y_list.append(rand_y)
if np.add(rand_x ** 2, rand_y ** 2) <= 1:
num_circle_points += 1
pi = 4 * float(num_circle_points) / float(total_points)
return pi
print(f'monte_carlo(1024):.6f')