私のgenetic algorithm
プロジェクトで、あるタイプの突然変異(creep
)を実装するために、次の関数を書いています。私はjavaの組み込みランダム生成ライブラリを使用しているので、すべてindex
を得る確率は一様です。私は、ユニフォームの代わりに二項分布を使うように関数を変更するように求められてきました。私がグーグルで行った限り、私はuniform/binomialへの変換を示すサンプル/チュートリアルを見つけることができませんでした。どのように達成するのですか?一様乱数生成を二項式に変換する
int mutationRate = 0.001;
public void mutate_creep() {
if (random.nextDouble() <= mutationRate) {
// uniform random generation
int index = random.nextInt(chromoLen);
if(index%2 == 0) { // even index
chromo[index] += 1;
} else { // odd index
chromo[index] -= 1;
}
}
}
注:私はすでにA efficient binomial random number generator code in Javaで溶液を見てきました。ここでの問題はcreep mutation algorithm
に固有なので、どのように直接適用できるかはわかりません。
[Javaの効率的な2項乱数ジェネレータコード]の可能な複製(http://stackoverflow.com/questions/23561551/a-efficient-binomial-random-number-generator-code-in-java) – pjs
@ pjs私はあなたが重複したマークされた質問に答えたことを理解します。参考までに、私はすでにそれを見てきました。私はそれを私の状況で直接使用することはできません。私はそれを 'creep mutation algorithm'のために必要としています。ですから、複製フラグを解除して、私の問題をここに答えてください。 – DhiwaTdG
二項関係は二項式であり、リンクされた答えはそれらを得る方法を示します。現在言いましたように、あなたの質問は*重複しています。あなたの問題のような音は二項演算を生成する方法ではなく、あなたのクリープアルゴリズムでそれを使う方法です。 – pjs