【发布时间】:2017-02-05 19:17:56
【问题描述】:
我有这个 if 语句来检查 (x,y) 随机生成的坐标是否在圆内,如果是,它会增加一个计数器来计算圆内实际有多少点。 我有这个:
x = numpy.random.uniform(-1, 1, num)
y = numpy.random.uniform(-1, 1, num)
if(numpy.all((x**2 + y**2) < 1)):
c+=1
我没有收到任何错误,但 if 语句不起作用,即使我确定存在使 if 语句为真的坐标。我的语法在这里正确吗?
提前致谢!
编辑:我刚刚意识到我需要遍历每个元素的 x 和 y 数组,抱歉不清楚!
【问题讨论】:
-
什么是 x 和 y? numpy 数组?如果它们是 numpy 数组,很确定你需要
(x ** 2 + y ** 2 < 1).sum() -
如果您的程序存在运行时错误,则程序的语法无关紧要。您应该打印出
x和y的值,看看它们的值是否符合您的预期。 -
您的描述应该是:检查所有 (x,y) 坐标是否在圆内。您确定要使用
.all而不是.any? -
x**2 + y**2的输出是什么? -
你确定 x 和 y 不是数字数组吗?这可以解释你的 if “不起作用”,因为如果数组很大,它们描述的所有点都不太可能位于圆内。您是否有机会尝试计算 pi?然后(如果这些是数组)您不需要 if 语句,而只需要
c+=((x**2 + y**2) < 1).sum()这会计算有多少坐标对描述了圆内的一个点。
标签: python python-2.7 numpy if-statement