我想将数字生成为具有正态分布的数组。 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