我想知道如何有效地获得圆形轨迹上随机点的坐标。我尝试了圆的方程,其中 (h,k) 是中心,r 是半径,(x,k) 是随机生成的点。
(x?h)^2 + (y?k)^2 = r^2
我尝试检查每个随机生成的点是否满足方程,但这种方法效率极低。有什么办法可以在python中实现它吗?
使用三角函数?
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
Run Code Online (Sandbox Code Playgroud)
这是它在完整程序中的使用:
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()
Run Code Online (Sandbox Code Playgroud)
结果: