Python随机生成均匀分布在三角形内或者任意多边形内的点
作者:有问必答不知道 时间:2022-02-15 22:02:14
Python有一随机函数可以产生[0,1)区间内的随机数,基于此函数生成随机分布在任意三角形内的点
由数学知识得知:
几何体的向量表达形式
直线:
线段:
推广到高维
三维平面:
三角形:
注释,v这个向量表示的是在图形上的点的坐标,根据数学知识得知,直线和三维平面内的v构成的点集是放射集,而线段则是凸集, 其余向量是不在同一个点或者同一个平面的点的坐标构成的列向量
那么针对三角形可以写成如下:
我们可以先生成随机的贝塔,然后随机生成阿尔法,然后处理阿尔法,使得点是随机落在三角形内的,这里用的是开始生成的随机数的算术平方根作为阿尔法数值,关于为什么这样可以参考
Python随机生成均匀分布在单位圆内的点
现附代码如下:
import numpy as np
import matplotlib.pyplot as plt
if __name__ == '__main__':
x1, y1 = 0, 30
x3, y3 = 200, -10
x2, y2 = 100, 200
sample_size = 500
theta = np.arange(0,1,0.001)
x = theta * x1 + (1 - theta) * x2
y = theta * y1 + (1 - theta) * y2
plt.plot(x,y,'g--',linewidth=2)
x = theta * x1 + (1 - theta) * x3
y = theta * y1 + (1 - theta) * y3
plt.plot(x, y, 'g--', linewidth=2)
x = theta * x2 + (1 - theta) * x3
y = theta * y2 + (1 - theta) * y3
plt.plot(x, y, 'g--', linewidth=2)
rnd1 = np.random.random(size = sample_size)
rnd2 = np.random.random(size=sample_size)
rnd2 = np.sqrt(rnd2)
x = rnd2 * (rnd1 * x1 + (1 - rnd1) * x2) + (1 - rnd2) * x3
y = rnd2 * (rnd1 * y1 + (1 - rnd1) * y2) + (1 - rnd2) * y3
plt.plot(x,y,'ro')
plt.grid(True)
# plt.savefig('demo.png')
plt.show()
生成图:
作为推广,其实多个多边形也是可以这样生成的,只需要分割为多个三角形,根据三角形面积比例,控制样本比例即可。
来源:http://blog.csdn.net/u011396359/article/details/53471524
标签:Python,均匀分布
0
投稿
猜你喜欢
django query模块
2021-12-01 09:16:22
使用python 和 lint 删除项目无用资源的方法
2023-10-22 16:56:08
ASP 读取MP3文件帧的信息比特率,采样频率,播放时间
2010-06-04 12:22:00
Thinkphp5.0框架视图view的循环标签用法示例
2024-06-05 09:22:48
SQLServer 设置单词首字母大写
2024-01-12 20:14:41
Python教程之类型转换详解
2021-03-23 02:48:17
Django之第三方平台QQ授权登录的实现
2023-04-27 16:37:06
python自动化之re模块详解
2021-07-01 19:34:16
python datetime处理时间小结
2022-11-21 01:38:15
python去除字符串中空格的6种常用方法
2023-09-25 12:36:53
Hibernate Oracle sequence的使用技巧
2009-06-19 17:25:00
JS设计模式之单例模式(一)
2024-05-11 09:06:29
小白学Python之实现OCR识别
2022-02-12 20:35:48
asp.net中调用winrar实现压缩解压缩的代码
2023-07-18 14:30:30
php比较两个指定的日期的实例讲解
2023-06-13 12:11:29
Golang学习之平滑重启
2024-04-25 15:05:57
Python从MP3文件获取id3的方法
2021-04-12 13:35:48
数据分页显示按钮,自动获取url链接
2009-06-22 12:59:00
浅谈python中真正关闭socket的方法
2023-11-02 15:41:56
Node.js的非阻塞I/O、异步与事件驱动介绍
2024-05-13 09:35:02