我需要通过求和来估计pi的值 𝑆𝑁 = (1/(𝑁 + 1)) ∑ 1/( 1 − 𝑥 𝑖2 )^ (1/2) 其中𝑥𝑖 是均匀分布的随机数。
import math
import random
def Pi(N,x):
S = (1/(N+1))*(1/(1-x**2)**(0.5))
return S
def function(N,a,b):
x = random.uniform(a,b)
total = sum(Pi(N,x))
return total
print(function(1000,0.0,1.0))
输出基本上就是这个。
TypeError: 'float' 对象不能解释为整数
最佳答案
您正在对 Pi
的结果调用 sum
。但是 Pi
返回一个数字,而不是一个可迭代对象。只需删除对 sum
的调用。 sum
获取一个可迭代对象(列表、字典、元组等)并将所有值相加。因此,当您向它传递无法迭代的内容(如 float )时,它无法对任何内容求和,因为没有可迭代的值。
import random
def Pi(N,x):
S = (1/(N+1))*(1 / (1-x**2) ** 0.5)
return S
def function(N,a,b):
x = random.uniform(a,b)
total = Pi(N,x)
return total
print(function(1000,0.0,1.0))
关于python - 将 𝝅 计算为随机总和(蒙特卡罗),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37218512/