重複の可能性:
Objective-C/C でランダムなガウス倍精度を生成する
一様分布からではなく、iOS のガウス (通常、ベル曲線) 分布から乱数を取得する方法はありますか? 私が見つけたすべての乱数ジェネレーターは基本的に均一であり、特定のポイントの周りに数値をクラスター化したいと考えています。ありがとう!
重複の可能性:
Objective-C/C でランダムなガウス倍精度を生成する
一様分布からではなく、iOS のガウス (通常、ベル曲線) 分布から乱数を取得する方法はありますか? 私が見つけたすべての乱数ジェネレーターは基本的に均一であり、特定のポイントの周りに数値をクラスター化したいと考えています。ありがとう!
一様分布ジェネレータを使用してBox-Muller Transformを適用するだけです:
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
簡単なオプションの 1 つは、一様分布からのいくつかの数値を一緒に追加することです。多くのさいころベースのゲームでは、このアプローチを使用して、結果のほぼ正規分布を生成します。
ウィキペディア経由
必要なディストリビューションをより具体的に指定できる場合は、より正確なソリューションが存在する可能性がありますが、複数のロールを組み合わせることは、簡単でかなり柔軟なソリューションです。