Python随机生成均匀分布在三角形内或者任意多边形内的点
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()
生成图:
作为推广,其实多个多边形也是可以这样生成的,只需要分割为多个三角形,根据三角形面积比例,控制样本比例即可。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。
相关推荐
-
Python生成8位随机字符串的方法分析
本文实例讲述了Python生成8位随机字符串的方法.分享给大家供大家参考,具体如下: #!/usr/bin/env python # -*- coding: utf-8 -*- import random import string #第一种方法 seed = "1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!@#$%^&*()_+=-" sa = [] for i in range(8): sa.a
-
Python实现生成随机日期字符串的方法示例
本文实例讲述了Python实现生成随机日期字符串的方法.分享给大家供大家参考,具体如下: 生成随机的日期字符串,用于插入数据库. 通过时间元组设定一个时间段,开始和结尾时间转换成时间戳. 时间戳中随机取一个,再生成时间元组,再把时间元组格式化输出为字符串 import time import random a1=(1976,1,1,0,0,0,0,0,0) #设置开始日期时间元组(1976-01-01 00:00:00) a2=(1990,12,31,23,59,59,0,0,0) #设置结束日
-
Python实现生成随机数据插入mysql数据库的方法
本文实例讲述了Python实现生成随机数据插入mysql数据库的方法.分享给大家供大家参考,具体如下: 运行结果: 实现代码: import random as r import pymysql first=('张','王','李','赵','金','艾','单','龚','钱','周','吴','郑','孔','曺','严','华','吕','徐','何') middle=('芳','军','建','明','辉','芬','红','丽','功') last=('明','芳','','民','敏
-
python编程实现随机生成多个椭圆实例代码
椭圆演示: 代码示例: import matplotlib.pyplot as plt import numpy as np from matplotlib.patches import Ellipse NUM = 250 ells = [Ellipse(xy=np.random.rand(2) * 10, width=np.random.rand(), height=np.random.rand(), angle=np.random.rand() * 360) for i in range(N
-
python实现随机梯度下降(SGD)
使用神经网络进行样本训练,要实现随机梯度下降算法.这里我根据麦子学院彭亮老师的讲解,总结如下,(神经网络的结构在另一篇博客中已经定义): def SGD(self, training_data, epochs, mini_batch_size, eta, test_data=None): if test_data: n_test = len(test_data)#有多少个测试集 n = len(training_data) for j in xrange(epochs): random.shuf
-
Python编程产生非均匀随机数的几种方法代码分享
1.反变换法 设需产生分布函数为F(x)的连续随机数X.若已有[0,1]区间均匀分布随机数R,则产生X的反变换公式为: F(x)=r, 即x=F-1(r) 反函数存在条件:如果函数y=f(x)是定义域D上的单调函数,那么f(x)一定有反函数存在,且反函数一定是单调的.分布函数F(x)为是一个单调递增函数,所以其反函数存在.从直观意义上理解,因为r一一对应着x,而在[0,1]均匀分布随机数R≤r的概率P(R≤r)=r. 因此,连续随机数X≤x的概率P(X≤x)=P(R≤r)=r=F(x) 即X的分
-
python实现随机森林random forest的原理及方法
引言 想通过随机森林来获取数据的主要特征 1.理论 随机森林是一个高度灵活的机器学习方法,拥有广泛的应用前景,从市场营销到医疗保健保险. 既可以用来做市场营销模拟的建模,统计客户来源,保留和流失.也可用来预测疾病的风险和病患者的易感性. 根据个体学习器的生成方式,目前的集成学习方法大致可分为两大类,即个体学习器之间存在强依赖关系,必须串行生成的序列化方法,以及个体学习器间不存在强依赖关系,可同时生成的并行化方法: 前者的代表是Boosting,后者的代表是Bagging和"随机森林"(
-
Python简单生成随机姓名的方法示例
本文实例讲述了Python简单生成随机姓名的方法.分享给大家供大家参考,具体如下: 用到random.choice(序列) 在一个序列中随机选取一个值 # coding:utf-8 import random as r a1=['张','金','李','王','赵'] a2=['玉','明','龙','芳','军','玲'] a3=['','立','玲','','国',''] print("我们测试结果:") for i in range(15): name=r.choice(a1)+
-
Python随机生成均匀分布在三角形内或者任意多边形内的点
Python有一随机函数可以产生[0,1)区间内的随机数,基于此函数生成随机分布在任意三角形内的点 由数学知识得知: 几何体的向量表达形式 直线: 线段: 推广到高维 三维平面: 三角形: 注释,v这个向量表示的是在图形上的点的坐标,根据数学知识得知,直线和三维平面内的v构成的点集是放射集,而线段则是凸集, 其余向量是不在同一个点或者同一个平面的点的坐标构成的列向量 那么针对三角形可以写成如下: 我们可以先生成随机的贝塔,然后随机生成阿尔法,然后处理阿尔法,使得点是随机落在三角形内的,这里用的是
-
Python随机生成均匀分布在单位圆内的点代码示例
Python有一随机函数可以产生[0,1)区间内的随机数,但是如果我们想生成随机分布在单位圆上的,那么我们可以首先生成随机分布在单位圆边上的点,然后随机调整每个点距离原点的距离,但是我们发现这个距离不是均匀分布于[0,1]的,而是与扇形的面积相关的 我们使用另外的随机函数生成从[0,1)的随机数r,我们发现r<s0的概率为s0,显而易见,如果r为0,那么对应的距离应该为0,如果是1,对应的距离自然也应该是1,假设我们产生了m个随机数,那么小于s0的随机数应该为s0*m左右,而且这些应该对应于扇形
-
Python随机生成身份证号码及校验功能
GitHub : https://github.com/jayknoxqu/id-number-util 身份组成方式 中华人民共和国国家标准GB 11643-1999<公民身份号码>中规定:公民身份号码是特征组合码,由十七位数字本体码和一位校验码组成. 18位数字组合的方式是: 1 1 0 1 0 2 Y Y Y Y M M D D 8 8 8 X 区域码(6位) 出生日期码(8位) 顺序码(2位) 性别码(1位) 校验码(1位) 区域码(6位) 出生日期码(8位) 顺序码(2位) 性别码(
-
Python随机生成彩票号码的方法
本文实例讲述了Python随机生成彩票号码的方法.分享给大家供大家参考.具体如下: 前些日子在淘宝上买了一阵子彩票,每次都是使用淘宝的机选,每次一注.后来觉得不如自己写一个机选的程序有意思 1. xuanhao.py文件 import random def getResultStr(totalCount, resultCount): elements = [x + 1 for x in range(totalCount)] retStr = '' for i in range(resultCou
-
Python随机生成信用卡卡号的实现方法
本文实例讲述了Python随机生成信用卡卡号的实现方法.分享给大家供大家参考.具体分析如下: 这段Python代码根据信用卡卡号产生规则随机生成信用卡卡号,是可以通过验证的,仅供学习参考,请不要用于非法用途,否则后果自负. #!/usr/bin/python """ gencc: A simple program to generate credit card numbers that pass the MOD 10 check (Luhn formula). Usefull
-
python随机生成指定长度密码的方法
本文实例讲述了python随机生成指定长度密码的方法.分享给大家供大家参考.具体如下: 下面的python代码通过对各种字符进行随机组合生成一个指定长度的随机密码 python中的string对象有几个常用的方法用来输出各种不同的字符: string.ascii_letters 输出ascii码的所有字符 string.digits 输出 '0123456789'. string.punctuation ascii中的标点符号 print string.ascii_letters print s
-
Python随机生成手机号、数字的方法详解
本文实例讲述了Python随机生成手机号.数字的方法.分享给大家供大家参考,具体如下: Python随机产生手机号.数字.代码如下: # -*- coding:gbk -*- import random #随机产生26个手机号:以13开头,后面跟一位4~9之间的任意一位数字,后面是8位随机数字 for _ in range(26): print('13' + str(random.randrange(4,10))+ ''.join( str(random.choice(range(10))) f
-
Python随机生成数据后插入到PostgreSQL
用Python随机生成学生姓名,三科成绩和班级数据,再插入到PostgreSQL中. 模块用psycopg2 random import random import psycopg2 fname=['金','赵','李','陈','许','龙','王','高','张','侯','艾','钱','孙','周','郑'] mname=['玉','明','玲','淑','偑','艳','大','小','风','雨','雪','天','水','奇','鲸','米','晓','泽','恩','葛','玄'
-
Python随机生成带特殊字符的密码
在日常运维中,如果涉及到用户管理,就一定会用到给用户设置密码的工作,其实吧,平时脑子里觉得设置个密码没什么,但要真让你随手敲一个12位带特殊字符的随机密码,也是很痛苦的事,如果让你敲10个这样的随机密码,我估计要人要疯了,所以这事不适合人干,但机器最做这个最拿手,今天我们就来学习一段python脚本,可以直接生成自己需要的密码,且密码长度,数字,字符个数随意你指定,废话不多说了,我们直接看代码: #!/usr/bin/env python import string from itertools
-
python 随机生成10位数密码的实现代码
随机生成10位数密码,字母和数字组合 import string >>> import random >>> pwd = "" >>> letters=string.ascii_letters+string.digits >>> for i in range(10): ... letter=random.choice(letters) ... pwd += letter ... >>> print
随机推荐
- 详解JS中的立即执行函数
- 编译和解释的区别是什么
- Java事务管理学习之Spring和Hibernate详解
- CloudStack 安装及使用过程中常见问题汇总
- ThinkPHP做文字水印时提示call an undefined function exif_imagetype()解决方法
- php cli配置文件问题分析
- C#写日志类实例
- C#实现身份证号码验证的方法
- C#日期时间格式化小结
- php中将地址生成迅雷快车旋风链接的代码[测试通过]
- zend studio 快捷键收集
- 样式表CSS布局经验
- Node.js实现兼容IE789的文件上传进度条
- Redis 命令的详解及简单实例
- Linux网络服务器配置入门(一)
- sql2000数据库清除重复数据的二种方法
- java interface的两个经典用法
- 常用的电脑操作精典秘籍
- PHP 网站修改默认访问文件的nginx配置
- Java 判断字符串中是否包含中文的实例详解