如何產生正態分佈的隨機數?

時間 2021-05-13 00:04:04

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 的隨機實數 但問題是,生成區 ...