MathNet を使用した C# での特定の指数のべき乗則分布
-
25-09-2019 - |
質問
私は現在、特定の指数でべき乗則分布に従う複数の値 (float または double が望ましい) を生成する必要があるプロジェクトに取り組んでいます。
私は、MathNet.Iridium ライブラリを使用することを勧められました。私が抱えている問題は、ドキュメントが存在する場合ほど明確ではないことです。
べき乗則分布の一般的な概念に適合する複数の分布が表示されますが、特定の指数をパラメータとして使用する適切な分布を特定できません。
この件に関してより多くの経験を持っている人がいて、ヒントやアドバイスをくれる人はいますか?
解決
選択した分布の値を生成するには、「」で説明したように、逆累積分布関数を使用できます。 ウィキペディア.
段階的に説明すると、次のようになります。
- 好みの配信関数を選択してください。
- 紙とペンを使用して逆累積分布関数を計算します。
- 単位間隔の一様分布に基づいて値を生成します。
Random
ここではうまくいきます。 - ICDF に値を入力します。
結果は、選択した分布関数を使用してランダムに選択された値になります。
ステップ 2 で問題が発生した場合は、おそらく https://mathoverflow.net/ あなたを助けられる。
編集: 指数ガンマを含むべき乗則分布だけが必要な場合は、次の 1 つの値が生成されます。
double r = 1.0 / Math.Pow(1-new Random().NextDouble(), 1.0/(gamma+1));
所属していません StackOverflow