事情是这样的
我在玩几何画板的时候写了这个函数:
import numpy as math
import random
n = 10**6 # 实验次数
h = 0 # 成功次数
for i in range(n):
# 随机以原点为圆心 半径为2的圆在极坐标系中的坐标
r = random.uniform(0, 2)
deg = random.uniform(0, 360)
# 算出函数图像上的点的r
d = 1 - math.sin(deg)
if r <= d: # 在图形里
h += 1 # 成功次数加一
s = h / n # 算出成功率
ans = s * math.pi * 2**2 # 成功率乘以圆的面积等于图形面积
print(ans)
但算出来的结果却是6.2654415918721105
多随机了几次也是这样
求哪位帮我debug一下QwQ
蒙特卡洛法?你的解析式是什么,我帮你验算下
【以下回答由 GPT 生成】
问题出在导入的库的使用上面。
代码中导入的numpy库,但是却使用了math来进行计算。
正解是使用numpy库的函数来进行计算。
以下是修改后的代码:
import numpy as np
import random
n = 10**6 # 实验次数
h = 0 # 成功次数
for i in range(n):
# 随机以原点为圆心,半径为2的圆在极坐标系中的坐标
r = random.uniform(0, 2)
deg = random.uniform(0, 360)
# 计算函数图像上的点的r
d = 1 - np.sin(np.deg2rad(deg))
if r <= d: # 在图形里
h += 1 # 成功次数加一
s = h / n # 计算成功率
ans = s * np.pi * (2**2) # 成功率乘以圆的面积等于图形面积
print(ans)
请试着运行这段代码,看看是否得到了正确的结果。