我想知道如何有效地获得圆形轨迹上随机点的坐标。 我尝试了圆的方程式,其中(h,k)是中心,r是半径,(x,k)是随机生成的点。
(x-h)^ 2 +(y-k)^ 2 = r ^ 2
我尝试检查每个随机生成的点是否满足等式,但这种方法非常低效。 有什么办法可以在python中实现它吗?
答案 0 :(得分:4)
使用三角学?
from math import pi, cos, sin
from random import random
def point(h, k, r):
theta = random() * 2 * pi
return h + cos(theta) * r, k + sin(theta) * r
以下是它在完整程序中的用法:
import matplotlib.pyplot as plt
from math import pi, cos, sin
from random import random
def point(h, k, r):
theta = random() * 2 * pi
return h + cos(theta) * r, k + sin(theta) * r
xy = [point(1,2,1) for _ in range(30)]
plt.scatter(*zip(*xy))
plt.grid(color='k', linestyle=':', linewidth=1)
plt.axes().set_aspect('equal', 'datalim')
plt.show()
结果: