欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python隨機(jī)生成均勻分布在三角形內(nèi)或者任意多邊形內(nèi)的點(diǎn)

 更新時(shí)間:2017年12月14日 10:02:02   作者:有問(wèn)必答不知道  
這篇文章主要為大家詳細(xì)介紹了Python隨機(jī)生成均勻分布在三角形內(nèi)或者任意多邊形內(nèi)的點(diǎn),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

Python有一隨機(jī)函數(shù)可以產(chǎn)生[0,1)區(qū)間內(nèi)的隨機(jī)數(shù),基于此函數(shù)生成隨機(jī)分布在任意三角形內(nèi)的點(diǎn)
由數(shù)學(xué)知識(shí)得知:
幾何體的向量表達(dá)形式

直線:

線段:

推廣到高維

三維平面:

三角形:

注釋,v這個(gè)向量表示的是在圖形上的點(diǎn)的坐標(biāo),根據(jù)數(shù)學(xué)知識(shí)得知,直線和三維平面內(nèi)的v構(gòu)成的點(diǎn)集是放射集,而線段則是凸集, 其余向量是不在同一個(gè)點(diǎn)或者同一個(gè)平面的點(diǎn)的坐標(biāo)構(gòu)成的列向量
那么針對(duì)三角形可以寫成如下:

我們可以先生成隨機(jī)的貝塔,然后隨機(jī)生成阿爾法,然后處理阿爾法,使得點(diǎn)是隨機(jī)落在三角形內(nèi)的,這里用的是開(kāi)始生成的隨機(jī)數(shù)的算術(shù)平方根作為阿爾法數(shù)值,關(guān)于為什么這樣可以參考
Python隨機(jī)生成均勻分布在單位圓內(nèi)的點(diǎn)

現(xiàn)附代碼如下:

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()

生成圖:

作為推廣,其實(shí)多個(gè)多邊形也是可以這樣生成的,只需要分割為多個(gè)三角形,根據(jù)三角形面積比例,控制樣本比例即可。

 以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論