我想用Monte方法来近似pi的值,有不同的输入点(10,10**1等等),然后用Numba更快地得到代码。
下面是一个输入= 10的模拟
import numba
from random import *
import math
from math import sqrt
@numba.jit(nopython=True)
def go_fast(pi):
inside = 0
inputs =10
for i in range(0,inputs):
x=random()
y=random()
if sqrt(x*x+y*y)<=1:
inside+=1
pi=4*inside/inputs
return (pi)
pi = math.pi
go_fast(pi)我只想确保模拟是正确的,因为从这里得到的结果似乎有点误导。谢谢
发布于 2022-06-13 07:41:50
这一功能
def go_fast(pi):
inside = 0
inputs =10
for i in range(0,inputs):
x=random()
y=random()
if sqrt(x*x+y*y)<=1:
inside+=1
pi=4*inside/inputs
return (pi)一旦遇到sqrt(x*x+y*y)<=1持有的x,y就会终止,换句话说,for循环的循环次数不是确定性的(任何介于1和10之间的值)。如果您想要固定次数的所述for,您需要将return放在所述循环的外部,这也适用于pi计算,因为它应该在收集数据之后完成,即您的代码应该是
def go_fast(pi):
inside = 0
inputs =10
for i in range(0,inputs):
x=random()
y=random()
if sqrt(x*x+y*y)<=1:
inside+=1
pi=4*inside/inputs
return pihttps://stackoverflow.com/questions/72599184
复制相似问题