Python实现单位圆内均匀分布随机点的算法与代码

Ryan
Ryan
发布时间:2026-10-13| 2人浏览过
原创

本文介绍在Python中生成均匀分布在单位圆内随机点的方法。通过先生成圆周上的点,再对半径进行平方根变换,确保点在圆内均匀分布。提供完整代码示例及可视化效果,帮助开发者理解相关算法原理。

Python内置的随机函数可以生成[0,1)区间内的随机数。若需生成均匀分布在单位圆内的点,一种直观思路是先生成圆周上的点,再随机调整其到原点的距离。然而,直接对距离进行[0,1]均匀采样会导致点分布不均,因为面积与半径的平方成正比,距离的分布需与扇形面积相关联。

为实现均匀分布,我们引入另一个随机函数生成[0,1)区间的随机数r。若r小于s0,其概率为s0。当r=0时,对应距离为0;当r=1时,对应距离为1。假设生成m个随机数,其中小于s0的数量约为s0*m,这些点对应扇形面积的s0倍处(如图2所示的小扇形区域)。该区域内点的数量应为s0*m,此时扇形边长为s0^0.5。因此,s0对应的距离应为s0^0.5,映射函数为y=x^0.5(见图1)。

图1

 

图2

因此,每个顶点的边长由产生随机数的算术平方根决定。

附代码如下:

# -*- coding:utf-8 -*-
import numpy as np
import matplotlib.pyplot as plt

if __name__=='__main__':
  samples_num = 800
  t = np.random.random(size=samples_num) * 2 * np.pi - np.pi
  x = np.cos(t)
  y = np.sin(t)
  i_set = np.arange(0,samples_num,1)
  for i in i_set:
    len = np.sqrt(np.random.random())
    x[i] = x[i] * len
    y[i] = y[i] * len
  plt.figure(figsize=(10,10.1),dpi=125)
  plt.plot(x,y,'ro')
  _t = np.arange(0,7,0.1)
  _x = np.cos(_t)
  _y = np.sin(_t)
  plt.plot(_x,_y,'g-')
  plt.xlim(-1.1,1.1)
  plt.ylim(-1.1,1.1)
  plt.xlabel('x')
  plt.ylabel('y')
  plt.title('Random Scatter')
  plt.grid(True)
  plt.savefig('imag.png')
  plt.show()

图3

总结

以上就是本文关于Python随机生成均匀分布在单位圆内的点代码示例的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站:python实现图片处理和特征提取详解、python中实现k-means聚类算法详解、Python内存管理方式和垃圾回收算法解析等,有什么问题可以随时留言,小编会及时回复大家的。感谢朋友们对本站的支持!

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。