可能重复:
生成目标C / C的随机高斯双
有没有从均匀分布得到一个随机数没有任何办法,但是从高斯(正常,钟形曲线)分布的iOS? 所有我已经找到了随机数生成器基本都是统一的,我想使周围某一点的数字集群。 谢谢!
可能重复:
生成目标C / C的随机高斯双
有没有从均匀分布得到一个随机数没有任何办法,但是从高斯(正常,钟形曲线)分布的iOS? 所有我已经找到了随机数生成器基本都是统一的,我想使周围某一点的数字集群。 谢谢!
只需使用一个均匀分布生成器和应用箱穆勒变换 :
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
一个简单的选择是从均匀分布中添加几个数字加在一起。 许多基于骰子游戏使用这种方法产生的结果大致正态分布。
通过维基百科
如果你能具体谈谈你想要的分布可能有更精确的解决方案,但结合几卷是一个简单而相当灵活的解决方案。