Python 如何计算半径为35和65的两个圆之间的坐标数?

Python 如何计算半径为35和65的两个圆之间的坐标数?,python,arrays,loops,counter,Python,Arrays,Loops,Counter,我知道答案应该是我坐标的60%在这个范围内,但我只得到20%左右 import random import pylab import numpy pylab.close("all") #all import statements x = [(random.randint(0,100)) for i in range(3000)] #creating list of x coordinates y

我知道答案应该是我坐标的60%在这个范围内,但我只得到20%左右

import random
import pylab
import numpy
pylab.close("all")                                              #all import statements
x = [(random.randint(0,100)) for i in range(3000)]      #creating list of x coordinates
y = [(random.randint(0,100)) for j in range(3000)]      #creating list of y coordinates
array=zip(x,y)                                                  #creating an array by combining the x and y coordinates
counter = 0
for i, j in array:
        if 35**2 <= (i**2+j**2) <= 65**2:
                counter+= 1
print counter
随机导入
进口派拉布
进口numpy
pylab.close(“全部”)#所有导入语句
x=[(random.randint(0100))表示范围(3000)内的i]#创建x坐标列表
y=[(random.randint(0100))表示范围(3000)内的j]#创建y坐标列表
array=zip(x,y)#通过组合x和y坐标创建数组
计数器=0
对于数组中的i,j:

如果35**2问题是这条线:

if 35**2 <= (i**2+j**2) <= 65**2:

如果35**2问题出在这一行:

if 35**2 <= (i**2+j**2) <= 65**2:

如果35**2没有,你应该得到不到30%。您只填充了第一个象限

这里有一个情节:


不,你应该得到不到30%的收入。您只填充了第一个象限

这里有一个情节:


你的面积是10000,在第一象限。您看到的是一个面积为

pi(65**2 - 35**2)/4  
是2356。。。占总面积的23.56%。所以,你得到了正确的答案


顺便说一句,你的代码不需要那些pylab和numpy导入。

你的面积是10000,在第一象限。您看到的是一个面积为

pi(65**2 - 35**2)/4  
是2356。。。占总面积的23.56%。所以,你得到了正确的答案


顺便说一句,您的代码不需要那些pylab和numpy导入。

您可以通过
pylab.imshow()将其可视化:

将numpy导入为np
将pylab作为pl导入
y、 x=np.mgrid[:100,:100]
d=x**2+y**2

mask=(35**2您可以通过
pylab.imshow()将其可视化:

将numpy导入为np
将pylab作为pl导入
y、 x=np.mgrid[:100,:100]
d=x**2+y**2


遮罩=(35**2你如何知道你是否在使用随机数?在如此大的样本中,仅通过查看区域,它应该更接近60%。你如何知道你是否在使用随机数?在如此大的样本中,仅通过查看区域,它应该更接近60%。他正在检查半径为35和65的圆。对于半径为65的圆65,所有点都将满足x^2+y^2=65^2,所以方程将检查具有这些半径的圆,而不是直径。哦,你是对的,所以这只是第二个问题。我将编辑它。他正在检查半径为35和半径为65的圆。对于半径为65的圆,所有点都将满足x^2+y^2=65^2,所以方程将检查具有这些半径的圆半径,不是直径。哦,你是对的,所以这只是第二个问题。我会编辑它。那张图不显示(四分之一)圆,所以很难从中获得很多信息…是的。但问题是,在其他三个象限中没有任何内容。那张图不显示(四分之一-)圆圈,所以很难从中获得很多信息…是的。但问题是其他三个象限中什么都没有。我想你的意思是
65**2-35**2
,而不是
*
。你是对的-我应该第一次将等式显示为code,这样重复的*就会正确显示。我想你的意思是
65**2-35**2
,而不是
*
。你说得对-我应该第一次将方程式显示为代码,以便正确显示重复的*。很好的视觉演示。很好的视觉演示。