gpt4 book ai didi

python - 初学者 Python 蒙特卡洛模拟

转载 作者:太空宇宙 更新时间:2023-11-03 12:53:04 25 4
gpt4 key购买 nike

我是 Python 的初学者,正在完成我们的讲师设置的练习。我正在为这个问题而苦苦挣扎。

在 Python 编辑器中,编写蒙特卡罗模拟来估计数字 π 的值。具体执行以下步骤:A. 产生两个数组,一个称为 x,一个称为 y,每个包含 100 个元素,它们是在 -1 和 1 之间随机均匀分布的实数。B. 将 y 与 x 绘制为图中的点。相应地标记你的轴。C. 写下一个数学表达式,定义哪些 (x, y) 对数据点位于半径为 1 的圆中,以图形的 (0, 0) 原点为中心。D. 使用 bool 掩码来识别圆内的点,并将它们叠加在一个在您已经在 B 中绘制的数据点上使用不同的颜色和标记大小。

这就是我目前所拥有的。

import numpy as np
import math
import matplotlib.pyplot as plt
np.random.seed(12345)
x = np.random.uniform(-1,1,100)
y = np.random.uniform(-1,1,100)
plt.plot(x,y) //this works


for i in x:
newarray = (1>math.sqrt(y[i]*y[i] + x[i]*x[i]))
plt.plot(newarray)

有什么建议吗?

最佳答案

正如评论中指出的,您的代码中的错误是for i in x 应该是for i in xrange(len(x))

如果你想像声明中所说的那样实际使用 bool 掩码,你可以这样做

    import pandas as pd
allpoints = pd.DataFrame({'x':x, 'y':y})

# this is your boolean mask
mask = pow(allpoints.x, 2) + pow(allpoints.y, 2) < 1
circlepoints = allpoints[mask]

plt.scatter(allpoints.x, allpoints.y)
plt.scatter(circlepoints.x, circlepoints.y)

将点数增加到 10000 你会得到这样的东西 scatter plot

要估计 PI,您可以使用著名的蒙特卡洛推导

    >>> n = 10000
>>> ( len(circlepoints) * 4 ) / float(n)
<<< 3.1464

关于python - 初学者 Python 蒙特卡洛模拟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54400591/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com