1樓:陳昊
老生常談的 Box-Muller 方法不過實現有些不同,不用三角函式。
參考 Generating Gaussian Random Numbers
// return a random double between zero and 1
inline
double
RandFloat
()//returns a random number with a normal distribution
inline
double
RandGaussian
(double
mean
=0.0
,double
standard_deviation
=1.0
)else
while(w
>=1.0);w=
sqrt((
-2.0
*log(w
))/w
);y1=x1
*w;y2
=x2*w
;use_last=1
;}return
(mean+y1
*standard_deviation);}
2樓:十天
1,先產生均勻分布的隨機數(線性取餘等)
2,把均勻分布變換到正態分佈(經典的有Box-Muller Transform,傅利葉變換等)
3樓:
用Excel可以
4樓:Xi Yang
如果你的要求不高,比如只是應用在遊戲裡,那麼可以簡單地累加若干個均勻分布的隨機數。實際上,累加三個隨機數就可以形成看起來很平滑的分布。我從《遊戲程式設計精粹7》學到的這個技巧。
5樓:帕林
result = 0
a = 0
b = 1
for i in range(6):
result += random.uniform(a, b)print(result/6)
6樓:「已登出」
我記得統計之都有篇文章講過這個,乙個是Box-Muller直接算,乙個是 CDF 反演,乙個我忘了,最後乙個我比較喜歡,是 rejection sample
鏈結在此
Editor: 漫談正態分佈的生成
7樓:何史提
numpy
asnp
from
scipy.special
import
erfinv
defboxmullersampling(mu=0
,sigma=1
,size=1
):u=np
.random
.uniform
(size
=size)v
=np.random
.uniform
(size
=size)z
=np.sqrt(-
2*np.
log(u))
*np.cos(2
*np.pi
*v)returnmu+
z*sigma
definverfsampling(mu
=0,sigma=1
,size=1
):z=np
.sqrt(2
)*erfinv(2
*np.random
.uniform
(size
=size)-
1)returnmu+
z*sigma
如何生成a到b範圍內正態分佈隨機數?
在學習統計方法的時候,手頭沒有現成的資料,怎麼辦呢?有沒有工具可以模擬生成隨機數,並能夠做一些相應的設定?Excel資料分析工具提供了隨機數發生器,能夠快速產生各種分布的資料,包括均勻 正態 伯努利 二項式 泊松 模式和離散。R language N 1000 mu a b 2 sigma x rn...
python中產生隨機數是均勻分布的嗎
很好驗證啊 Python版本3.5.2 In 1 from collections import CounterIn 2 import randomIn 3 Counter random randint 0 999 100for in range 1000000 Out 3 Counter FRAN...
是否有方法產生 , 的隨機數?
支浩宇 應該這麼理解無窮,無窮的乙個子集還是無窮的。乙個無限多房間的旅館,再住進來無限多人,一樣能住下,再搬走無限多人,哇塞跟沒搬之前一樣還是住滿的。所以說,你在無窮範圍裡面生成隨機數,生成的隨機數一定是無窮大的。 喵嗚大將軍 沒錯,這個問題確實等價於 生成區 0,1 的隨機實數 但問題是,生成區 ...