我是一個Java新手。我知道Java有一個來自高斯分佈的隨機數生成器函數。正如我從其他問題中知道的那樣,Java的內置隨機生成器並不好,因爲它沒有考慮我最需要的高斯分佈的輸入均值和標準差。我正在研究遺傳算法。出於突變的目的,我必須從高斯分佈,Cauchy分佈和Levy分佈生成隨機數。發電機功能必須輸入該分配的Scale Parameter和Location Parameter。我怎樣才能做到這一點?從Cauchy隨機數發電
1
A
回答
0
Java沒有那些內置的。你將不得不讓你自己的功能,或找到一個第三方庫。
0
CauchyDistribution從包 org.apache.commons.math3.distribution似乎是你想要的。
Java沒有內置的東西。
如果您反對該包中的jar文件膨脹,則必須自行滾動,類似於this example for Gaussian。
0
Eventhough的問題是有點老,我會盡量回答,因爲我一直在尋找同樣的事情,它可以幫助旁邊的人:
要實現一個RNG你需要了解以下內容的任意分佈:
- 在[0,1)範圍生成均勻分佈的數字是沒有問題的
- 一個distributionfunction的推導的分佈密度(例如高斯鐘形曲線)
- 的distributionfunctio n在-Infinity上是(或多或少)0,在Infinity上是1。在這兩個極端之間,它會單調增加。
現在,你必須以下列方式使用這些東西(至少爲1和3):
- 計算分佈函數(集成密度)
- 解決這個方程X
- 在結果函數中傳遞一個均勻分佈的數字作爲參數以獲得適當分佈的結果。
實施例:
柯西分佈:
F(X)= 1 /(X 2 + 1)/ PI
- 分佈函數:
Y = F(x)= arctan(x)/ Pi + 0.5(有必要加0.5得到R→[0,1]函數
- 解決對於x
X = G(Y)= TAN(的y 0。5)* PI(G是逆到F - 通常˚F^( - 1)
現在只是把所生成的雙如在函數y:
返回Math.tan(rand.nextDouble ()-0.5)* Math.Pi;
對於規模和位置參數,你只需要做到以下幾點:
X是高斯(意爲:N(0,1))的分佈式隨機變量
平均數(A * X + B)= A *平均值(X)+ B VAR(A * X + B)=A²* VAR(X)
一個是你的尺度參數,b爲你的位置參數。 因此,生成標準高斯分佈式變量並與sqrt(比例)相乘並添加位置參數。
相關問題
- 1. 隨機化身發電機
- 2. C#隨機BigInt有發電機
- 3. 從發電機調用發電機
- 4. 從隨機數組發送結果到電子郵件php
- 5. 隨機數發生器dev /隨機
- 6. 隨機數發生器自動隨機
- 7. 提高隨機數庫,使用相同的隨機數發生器,用於不同的變量發電機
- 8. Python的隨機數字字母和額外的發電機
- 9. 隨機數字/字母發電機不能正常工作
- 10. 從輸入的隨機數發生器
- 11. Pygame隨機地下城發電
- 12. 從隨機長生成隨機數
- 13. Python:如何從非標準Cauchy分佈隨機抽樣,因此具有不同的參數?
- 14. 隨機從數組
- 15. 隨機數發生器隨着警報
- 16. Cauchy在JAGS之前
- 17. c#發現隨機數
- 18. Android隨機數發行
- 19. Ç隨機數發生器
- 20. iphone隨機數發行
- 21. 僞隨機數發生器
- 22. RNG(隨機數發生器)
- 23. 隨機數發生器
- 24. Node.js隨機數發生器?
- 25. 隨機數發生器
- 26. 隨機數發生器,C++
- 27. 隨機數發生器
- 28. MersenneTwister隨機數發生器
- 29. Java隨機數發生器
- 30. 隨機數發生器,android