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