我想將數字生成爲具有正態分佈的數組。 objective-c或c中是否有任何函數可以幫助輕鬆獲得結果而不需要任何數學計算?具有正態分佈的隨機數生成器,用於objective-c
3
A
回答
4
使用箱穆勒 - 轉型:
1)你需要兩個均勻分佈的隨機數u和v在間隔加倍(0,1](0需要被排除在外):
double u =(double)(random() %100000 + 1)/100000; //for precision
double v =(double)(random() %100000 + 1)/100000; //for precision
2.)計算具有0平均和的1標準偏差西格瑪均勻分佈值:如果需要的話添加西格馬和平均爲這樣的目標分佈
double x = sqrt(-2*log(u))*cos(2*pi*v); //or sin(2*pi*v)
3.) :
double y = x * sigmaValue + averageValue;
4.)把它放在一個數組
[randomNumberArray addObject:[NSNumber numberWithDouble:y]]
沒有爲objc無功能norminv
。所以,這裏需要數學。
編輯:我喜歡用random()
能夠播種隨機值產生
2
讓我說,請糾正我,如果我錯了前言本!
這是我的理解是,箱穆勒轉型依賴於()的源數字是他們的自我均勻分佈,因此利用隨機或RAND()作爲箱穆勒數據集的源將不必然會產生均勻分佈。
而是打算採用通用的一組均勻分佈的隨機數,並生成均勻分佈在二維座標系中的獨立隨機數對。
Wikipedia: Box-Muller Transform
然而有另一種方式:在使用的函數的rand48庫
在大多數Unix系統(和iOS或OSX因而目標C):
double drand48(void);
void srand48(long int seedval);
srand48()種子發生器,並drand48()產生均勻分佈在區間[0.0 - 1.0]的隨機數
相關問題
- 1. Java - 實現產生正態分佈的數字的隨機向量生成器
- 2. Ruby中生成高斯(正態分佈)隨機數的代碼
- 3. 在FORTRAN中截斷正態分佈的僞隨機數生成
- 4. 快速隨機正態分佈生成器
- 5. 生成具有特定分佈的隨機數字c
- 6. 如何在Prolog中生成正態分佈隨機數?
- 7. 生成指數分佈的隨機數
- 8. 在matlab中生成一個基於正態分佈的隨機數
- 9. 在excel中生成沒有小數的正態分佈隨機數
- 10. 產生從用C數正態分佈的隨機數/ C++
- 11. 如何用Scipy生成隨機數的具體分佈
- 12. 均勻分佈的隨機數生成
- 13. 從指數分佈生成隨機數
- 14. 在C中生成正態分佈隨機值的算法?
- 15. 如何在matlab中生成跟隨偏斜正態分佈的隨機數
- 16. VB.NET中的正態分佈隨機數
- 17. 使用觀測數據的形狀生成隨機對數正態分佈
- 18. 使用Boost生成基於Beta分佈的隨機數
- 19. 生成具有特定分佈的隨機樣本
- 20. 生成具有雙峯度分佈的隨機網絡
- 21. 如何使用AMPL中的正態分佈生成一個隨機數矩陣?
- 22. 生成數正態隨機遊動
- 23. 如何在R中生成具有指定對數正態分佈的隨機數?
- 24. ObjectiveC隨機數字
- 25. 隨機數,具有不均勻分佈
- 26. 用於鏈表分配的隨機數生成器方法
- 27. 用於生成均勻分佈的隨機位集的方法
- 28. 如何從Matlab中截斷對數正態分佈生成隨機數?
- 29. 如何從具有特定均值和方差的正態分佈生成隨機數?
- 30. Matlab:從給定概率的正態分佈中生成隨機數
你是真的,但我認爲有一些方法可以幫助這個實現更容易 – 2013-03-03 13:31:29
這可能有幫助:http://stackoverflow.com/questions/12948293/ios-gaussian-distribution-of-random-numbers – Spectravideo328 2013-03-03 13:44:56