Python隨機(jī)生成均勻分布在單位圓內(nèi)的點(diǎn)代碼示例
Python有一隨機(jī)函數(shù)可以產(chǎn)生[0,1)區(qū)間內(nèi)的隨機(jī)數(shù),但是如果我們想生成隨機(jī)分布在單位圓上的,那么我們可以首先生成隨機(jī)分布在單位圓邊上的點(diǎn),然后隨機(jī)調(diào)整每個(gè)點(diǎn)距離原點(diǎn)的距離,但是我們發(fā)現(xiàn)這個(gè)距離不是均勻分布于[0,1]的,而是與扇形的面積相關(guān)的
我們使用另外的隨機(jī)函數(shù)生成從[0,1)的隨機(jī)數(shù)r,我們發(fā)現(xiàn)r<s0的概率為s0,顯而易見(jiàn),如果r為0,那么對(duì)應(yīng)的距離應(yīng)該為0,如果是1,對(duì)應(yīng)的距離自然也應(yīng)該是1,假設(shè)我們產(chǎn)生了m個(gè)隨機(jī)數(shù),那么小于s0的隨機(jī)數(shù)應(yīng)該為s0*m左右,而且這些應(yīng)該對(duì)應(yīng)于扇形面積的s0倍處即圖2的小扇形區(qū)域,落在這一區(qū)域的點(diǎn)應(yīng)該為s0*m,此時(shí)扇形邊長(zhǎng)為s0^0.5,因此s0對(duì)應(yīng)的距離應(yīng)該為s0^0.5,因此我們得到的映射函數(shù)為y=x^0.5(圖1)
圖1
圖2
因此我們對(duì)于每個(gè)頂點(diǎn)的邊長(zhǎng)便是產(chǎn)生隨機(jī)數(shù)的算術(shù)平方根的大小
附代碼如下:
# -*- 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
總結(jié)
以上就是本文關(guān)于Python隨機(jī)生成均勻分布在單位圓內(nèi)的點(diǎn)代碼示例的全部?jī)?nèi)容,希望對(duì)大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站:python實(shí)現(xiàn)圖片處理和特征提取詳解、python中實(shí)現(xiàn)k-means聚類算法詳解、Python內(nèi)存管理方式和垃圾回收算法解析等,有什么問(wèn)題可以隨時(shí)留言,小編會(huì)及時(shí)回復(fù)大家的。感謝朋友們對(duì)本站的支持!
相關(guān)文章
Python爬蟲(chóng)實(shí)戰(zhàn)之用selenium爬取某旅游網(wǎng)站
上一篇我們已經(jīng)知道怎么簡(jiǎn)單使用selenium了,那么我們就從這篇博客來(lái)動(dòng)手爬取網(wǎng)站吧,文中有非常詳細(xì)的代碼示例,需要的朋友可以參考下2021-06-06Python3 串口接收與發(fā)送16進(jìn)制數(shù)據(jù)包的實(shí)例
今天小編就為大家分享一篇Python3 串口接收與發(fā)送16進(jìn)制數(shù)據(jù)包的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-06-06Python腳本判斷 Linux 是否運(yùn)行在虛擬機(jī)上
這篇文章主要介紹了Python腳本判斷 Linux 是否運(yùn)行在虛擬機(jī)上,本文講解了判斷 OpenVZ/Xen PV/UML、判斷 VMware/Xen HVM/KVM、判斷 VirtualBox/Virtual PC等方法,需要的朋友可以參考下2015-04-04Python實(shí)現(xiàn)PDF文字識(shí)別提取并寫(xiě)入CSV文件
這篇文章主要是和大家分享一個(gè)Python實(shí)現(xiàn)PDF文字識(shí)別與提取并寫(xiě)入?CSV文件的腳本。文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下2022-03-03