使用Python测试随机点是否属于圆周

时间:2017-07-17 14:07:42

标签: python

我正在尝试使用Python在圆周上生成一个随机点。

我有一个圆心(0,0)和半径50.我做了以下。

import numpy as np
angle = 2 * np.pi * np.random.rand()
x = np.cos(angle) * 50
y = np.sin(angle) * 50

但是当我测试看点是否实际上在圆周上时,我做了这个

x ** 2 + y ** 2 == 50 ** 2

但我得到

False

为什么会这样?

2 个答案:

答案 0 :(得分:6)

这是浮点不精确的结果。一般来说,比较两个浮点数是否相等是一个坏主意,你应该测试它们是否在一定数量的彼此之内。例如,

epsilon = 0.000001
print abs(x ** 2 + y ** 2  - 50 ** 2) <= epsilson

另请参阅:How should I do floating point comparison?

答案 1 :(得分:3)

浮点运算并不精确,因此测试相等性并不总是像无限精度那样有效。