Python 如何调用该方法?

Python 如何调用该方法?,python,class,random,methods,uniform-distribution,Python,Class,Random,Methods,Uniform Distribution,调用类的方法aleatorio()时遇到问题。我需要使用我的ponto类的aleatorio()方法创建一个随机点p,这样我就可以在retangulo类中使用interior()方法来基本检查随机点是否落在我的两个矩形,r1和r2的内部。但是,我似乎无法生成所需的随机点p from random import uniform class ponto: def __init__(self,x,y): self.x=float(x) self.y=float(

调用类的方法
aleatorio()
时遇到问题。我需要使用我的
ponto
类的
aleatorio()
方法创建一个随机点
p
,这样我就可以在
retangulo
类中使用
interior()
方法来基本检查随机点是否落在我的两个矩形,
r1
r2
的内部。但是,我似乎无法生成所需的随机点
p

from random import uniform
class ponto:
    def __init__(self,x,y):
        self.x=float(x)
        self.y=float(y)

    def aleatorio(self):
        ''' Ponto aleatorio com coordenadas 0.0 a 10.0 '''
        self.x=uniform(0.0,10.0)
        self.y=uniform(0.0,10.0)

class retangulo():
    def __init__(self,a,b):
        self.a=a
        self.b=b

    def interior(self,p):
        ''' Verifica se ponto no interior do retangulo '''
        if p.x >= self.a.x and p.x <=self.b.x and p.y >=self.a.y and p.y<=self.b.y:
            return True
        return False

    def area(self):
        return self.a*self.b

a1=ponto(0.0,0.0)
b1=ponto(2.0,2.0)
r1=retangulo(a1,b1)
b2=ponto(4.0,4.0)
r2=retangulo(a1,b2)

p=ponto(0.4,0.9)
p.aleatorio()

d1=0
d2=0
for r in range(10000):
    if r1.interior(p)==True:
        d1+=1
    elif r2.interior(p)==True:
        d2+=1
print(d1,d2)
来自随机导入的

庞托级:
定义初始化(self,x,y):
self.x=浮动(x)
self.y=浮动(y)
def aleatorio(自我):
“Ponto aleatorio com coordenadas 0.0 a 10.0”
self.x=均匀(0.0,10.0)
self.y=均匀(0.0,10.0)
类retangulo():
定义初始化(self,a,b):
self.a=a
self.b=b
def内部(自,p):
''确认在ponto没有内部进行重新检查''

如果p.x>=self.a.x和p.x=self.a.y和p.y可能您的问题在于循环,而不是模具滚动。
@AlanLeuthard是非常正确的:此代码生成一个点,然后检查10000次该点是否位于两个矩形中。尝试每次通过循环创建一个新点:

d1=0
d2=0
for r in range(10000):
    p.aleatorio()
    if r1.interior(p)==True:
        d1+=1
    elif r2.interior(p)==True:
        d2+=1

print d1, d2
输出:

397 1187

这看起来更好吗?

请提供问题的证据。例如,插入一些print语句以显示问题输出。我从呼叫中获取号码没有问题。确切地说,是什么告诉你没有随机点?在这段代码中,我能找到的唯一问题是对范围(10000)内的r完全无用的
。我注意到的几件事是:在for循环中没有使用r值。基本上,在相同的两个矩形中检查相同的点10000次。实际上,您正在检查其中一个,如果第一个为假,则只检查第二个。如果总是要检查两个矩形,for循环中的elif行应该是if。您可能还希望将随机函数调用(aleatorio)移动到for循环中,以检查不同的点。大概不清楚您希望在这里发生什么。@AlanLeuthard是非常正确的:这段代码生成一个点,然后检查10000次该点是否位于两个矩形中。是的!刚刚意识到我的错误,你们都是对的。事实上,我一直在检查同一点,非常感谢:)