前言
最近遇到一个问题,需要在以一个坐标为中心的区域内生成一组均匀分布的随机点,首先想到的就是以圆作为区域。
圆内随机点
方法1:
根据\(x^{2}+y^{2}=R^{2}\),那么自让想到可以先随机生成[-R,R]间的横坐标x,然后生成[\(-\sqrt{R^{2}-X^{2}},\sqrt{R^{2}-X^{2}}\)]范围内的随机数y,那么(x,y)自然也就是在圆内的随机点了。
写一段代码看一看:
def random_point_in_circle(point_num, radius):
for i in range(2,point_num+1):
x=random.uniform(-radius,radius)
y_max=math.sqrt(radius*radius-x*x)
y=random.uniform(-y_max,y_max)
plt.plot(x,y,'*',color="blue")
def main():
pi = np.pi
theta = np.linspace(0, pi * 2, 1000)
R = 1
x = np.sin(theta) * R
y = np.cos(theta) * R
plt.figure(figsize=(6, 6))
plt.plot(x, y, label="cycle", color="green", linewidth=2)
plt.title("random_points_in_circle")