的iOS随机数的高斯分布[重复](iOS Gaussian distribution of rand

2019-08-01 14:51发布

可能重复:
生成目标C / C的随机高斯双

有没有从均匀分布得到一个随机数没有任何办法,但是从高斯(正常,钟形曲线)分布的iOS? 所有我已经找到了随机数生成器基本都是统一的,我想使周围某一点的数字集群。 谢谢!

Answer 1:

只需使用一个均匀分布生成器和应用箱穆勒变换 :

double u1 = (double)arc4random() / UINT32_MAX; // uniform distribution
double u2 = (double)arc4random() / UINT32_MAX; // uniform distribution
double f1 = sqrt(-2 * log(u1));
double f2 = 2 * M_PI * u2;
double g1 = f1 * cos(f2); // gaussian distribution
double g2 = f1 * sin(f2); // gaussian distribution


Answer 2:

一个简单的选择是从均匀分布中添加几个数字加在一起。 许多基于骰子游戏使用这种方法产生的结果大致正态分布。

通过维基百科

如果你能具体谈谈你想要的分布可能有更精确的解决方案,但结合几卷是一个简单而相当灵活的解决方案。



文章来源: iOS Gaussian distribution of random numbers [duplicate]