在圆的圆周上生成随机点(python)

Pra*_*hra 2 python random

我想知道如何有效地获得圆形轨迹上随机点的坐标。我尝试了圆的方程,其中 (h,k) 是中心,r 是半径,(x,k) 是随机生成的点。

(x?h)^2 + (y?k)^2 = r^2

我尝试检查每个随机生成的点是否满足方程,但这种方法效率极低。有什么办法可以在python中实现它吗?

Rob*_*obᵩ 7

使用三角函数?

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)

结果:

在此处输入图片说明