Python随机生成均匀分布在单位圆内的点代码示例

Python有一随机函数可以产生[0,1)区间内的随机数,但是如果我们想生成随机分布在单位圆上的,那么我们可以首先生成随机分布在单位圆边上的点,然后随机调整每个点距离原点的距离,但是我们发现这个距离不是均匀分布于[0,1]的,而是与扇形的面积相关的

我们使用另外的随机函数生成从[0,1)的随机数r,我们发现r<s0的概率为s0,显而易见,如果r为0,那么对应的距离应该为0,如果是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内存管理方式和垃圾回收算法解析等,有什么问题可以随时留言,小编会及时回复大家的。感谢朋友们对本站的支持!

(0)

相关推荐

  • 在Python程序中实现分布式进程的教程

    在Thread和Process中,应当优选Process,因为Process更稳定,而且,Process可以分布到多台机器上,而Thread最多只能分布到同一台机器的多个CPU上. Python的multiprocessing模块不但支持多进程,其中managers子模块还支持把多进程分布到多台机器上.一个服务进程可以作为调度者,将任务分布到其他多个进程中,依靠网络通信.由于managers模块封装很好,不必了解网络通信的细节,就可以很容易地编写分布式多进程程序. 举个例子:如果我们已经有一个通

  • Python自定义主从分布式架构实例分析

    本文实例讲述了Python自定义主从分布式架构.分享给大家供大家参考,具体如下: 环境:Win7 x64,Python 2.7,APScheduler 2.1.2. 原理图如下: 代码部分: (1).中心节点: #encoding=utf-8 #author: walker #date: 2014-12-03 #function: 中心节点(主要功能是分配任务) import SocketServer, socket, Queue CenterIP = '127.0.0.1' #中心节点IP C

  • Python使用multiprocessing实现一个最简单的分布式作业调度系统

    mutilprocess像线程一样管理进程,这个是mutilprocess的核心,他与threading很是相像,对多核CPU的利用率会比threading好的多. 介绍 Python的multiprocessing模块不但支持多进程,其中managers子模块还支持把多进程分布到多台机器上.一个服务进程可以作为调度者,将任务分布到其他多个机器的多个进程中,依靠网络通信. 想到这,就在想是不是可以使用此模块来实现一个简单的作业调度系统. 实现 Job 首先创建一个Job类,为了测试简单,只包含一

  • 用python + hadoop streaming 分布式编程(一) -- 原理介绍,样例程序与本地调试

    MapReduce与HDFS简介 什么是Hadoop? Google为自己的业务需要提出了编程模型MapReduce和分布式文件系统Google File System,并发布了相关论文(可在Google Research的网站上获得: GFS . MapReduce). Doug Cutting和Mike Cafarella在开发搜索引擎Nutch时对这两篇论文做了自己的实现,即同名的MapReduce和HDFS,合起来就是Hadoop. MapReduce的Data flow如下图,原始数据

  • Python实现将n个点均匀地分布在球面上的方法

    本文实例讲述了Python实现将n个点均匀地分布在球面上的方法.分享给大家供大家参考.具体分析如下: 最近工作上遇到一个需求,将10000左右个点均匀地分布在一个球面上.所谓的均匀,即相邻的两个点之间的距离尽量一致. 我的算法是用基于正多面体剖分球面,我选的是正八面体. 1. 效果图如下: 2.sphere.py代码如下 #!/usr/bin/python # -*- coding: utf-8 -*- import math class Spherical(object): '''球坐标系''

  • Python随机生成均匀分布在单位圆内的点代码示例

    Python有一随机函数可以产生[0,1)区间内的随机数,但是如果我们想生成随机分布在单位圆上的,那么我们可以首先生成随机分布在单位圆边上的点,然后随机调整每个点距离原点的距离,但是我们发现这个距离不是均匀分布于[0,1]的,而是与扇形的面积相关的 我们使用另外的随机函数生成从[0,1)的随机数r,我们发现r<s0的概率为s0,显而易见,如果r为0,那么对应的距离应该为0,如果是1,对应的距离自然也应该是1,假设我们产生了m个随机数,那么小于s0的随机数应该为s0*m左右,而且这些应该对应于扇形

  • Python随机生成均匀分布在三角形内或者任意多边形内的点

    Python有一随机函数可以产生[0,1)区间内的随机数,基于此函数生成随机分布在任意三角形内的点 由数学知识得知: 几何体的向量表达形式 直线: 线段: 推广到高维 三维平面: 三角形: 注释,v这个向量表示的是在图形上的点的坐标,根据数学知识得知,直线和三维平面内的v构成的点集是放射集,而线段则是凸集, 其余向量是不在同一个点或者同一个平面的点的坐标构成的列向量 那么针对三角形可以写成如下: 我们可以先生成随机的贝塔,然后随机生成阿尔法,然后处理阿尔法,使得点是随机落在三角形内的,这里用的是

  • 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

随机推荐