我想绘制由两个均匀分布的随机变量的函数生成的数字“pi”的近似值。我们的目标是证明在更高的样本绘制下函数值接近“pi”。python从迭代中返回数组
这里是我的PI功能:
def pi(n):
x = rnd.uniform(low = -1, high = 1, size = n) #n = size of draw
y = rnd.uniform(low = -1, high = 1, size = n)
a = x**2 + y**2 <= 1 #1 if rand. draw is inside the unit cirlce, else 0
ac = np.count_nonzero(a) #count 1's
af = np.float(ac) #create float for precision
pi = (af/n)*4 #compute p dependent on size of draw
return pi
我的问题:
我希望创建一个地块从PI依赖于n个值()一lineplot。
我的拳头尝试是:
def pipl(n):
for i in np.arange(1,n):
plt.plot(np.arange(1,n), pi(i))
print plt.show()
pipl(100)
返回:
ValueError: x and y must have same first dimension
我seocond猜测是启动一个迭代器:
def y(n):
n = np.arange(1,n)
for i in n:
y = pi(i)
print y
y(1000)
导致:
3.13165829146
3.16064257028
3.06519558676
3.19839679359
3.13913913914
所以算法并不遥远,但我需要输出作为matplotlib可以读取的数据类型。
我读:
http://docs.scipy.org/doc/numpy/reference/routines.array-creation.html#routines-array-creation
,并试图汤姆实现的功能等:
...
y = np.array(pi(i))
...
或
...
y = pi(i)
y = np.array(y)
...
和所有可从网站等功能。但是,我似乎无法将我的迭代y值放入matplotlib可以读取的值中。
我对Python很新,所以请体谅我的简单请求。我真的被困在这里,似乎无法自己解决这个问题。
您的帮助真的很感谢。
太好了,非常感谢。 – Vincent