2

遺伝的アルゴリズムで不均一な確率分布を実装しようとしています。

遺伝的プログラムの実装では、3つの結果を持つ実験があり、各結果には異なる確率があります。たとえば、ある結果の確率が 0.85、別の結果が 0.01、最後の結果が 0.14 だとします。

PS: 最近、それが不均一な確率分布と呼ばれることを知りました。私はそれをJavaで実装していますが、誰でも不均一な確率の背後にある理論を教えてもらえますか? ディストリビューションとそれを実装する Java パッケージ。

問題についてさらに情報が必要な場合は、お気軽にお問い合わせください。

前もって感謝します!

4

3 に答える 3

9

単純な離散分布の場合、累積確率を使用して目的の頻度で結果を返すサンプラーを作成できます。

Random r = new Random();
double v = r.nextDouble();

if (v <= 0.85) { return 0; }
if (v <= 0.86) { return 1; }
return 2;

これは、0.85、0.01、および 0.14 の確率で数値 0、1、および 2 を返します。

不均一な確率分布に関する理論に関しては、確率分布に関するウィキペディアの記事から始めることができます。ページの下部にある折りたたみ可能なセクションに特に注意してください。さまざまな特性を持つ不均一な分布 (連続と離散の両方) が多数存在することがわかります。

于 2010-06-22T16:09:03.073 に答える
4

特定のケースでは、[0; でランダムな値を取得することをお勧めします。100) 一様分布を使用して、どの範囲に収まるかを確認します: [0; 85)、[85;99)、[99、100)

于 2010-06-22T16:09:24.453 に答える
2

あなたの説明に基づいて、フィットネス比例選択 (ルーレット ホイール選択とも呼ばれます) について話しているように思えます。
http://en.wikipedia.org/wiki/Roulette-wheel_selection

私はnailxxの答えはあなたが何をする必要があるかをかなりコンパクトに説明していると思います.

遺伝的アルゴリズムのルーレット選択 ルーレット盤選択アルゴリズムも参照 してください。

私が間違っている場合は、役に立つと思われるライブラリをいくつか示します:
http://www.ee.ucl.ac.uk/~mflanaga/java/Stat.html
http://commons.apache.org/math/apidocs /org/apache/commons/math/random/package-summary.html

于 2010-06-22T18:25:02.847 に答える