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

时间:2018-01-20 17:03:04

标签: python random

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

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

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

1 个答案:

答案 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()

结果:

enter image description here