python - 将 𝝅 计算为随机总和(蒙特卡罗)

标签 python python-3.x montecarlo pi

我需要通过求和来估计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/

相关文章:

Python pandas dataframe "Don' t 想修剪值”

python - 如何知道列表的元素数量是偶数还是奇数

python-3.x - 在Windows中使用pip命令安装dlib时出错

r - 使用 R 进行布朗运动模拟

python - 遍历for循环python时如何检查以前的索引

python - 尝试在 Python 中使用 except

python - 打开两个文件的最佳方式

python - 自动求和,无需重新输入由空格分隔的数字/整数的解析数字列表

algorithm - 设置优先队列值以优化找到 'gift' 的概率

4维球体上点的Python均匀分布