Python之圆周率

【问题描述】

求解圆周率可以采用蒙特卡罗方法,在一个正方形中撒点,根据在 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')