Mathematicaでaとbの2つの部分の突然変異をシミュレートしようとしています。私は遺伝的浮動(完全にランダムな要素)を次のように入れました:
p[sim_, 0] = Join[Table[a, {15}], Table[b, {15}]]
p[sim_, t_] := p[sim, t] = RandomChoice[p[sim, t - 1], 30]
これにより、パーツaとbでランダムに構成される2つのテーブルが作成されました。
与えられた確率で発生するミューテーションを追加したいので、上記のコードに以下を追加してみました
Do[ReplacePart[p, i -> b] && If[RandomReal[] > .2, t], {t, 1, 15}]
したがって、0から1の間でランダムに描画された数値が、2より大きい場合は、元の2つのテーブルの要素iを置き換える必要があります。
だから私の最終的なコードは次のようになります
p[sim_, 0] = Join[Table[a, {15}], Table[b, {15}]]
p[sim_, t_] := p[sim, t] = RandomChoice[p[sim, t - 1], 30];
Do[If[RandomReal[] < .2,
ReplacePart[p[sim, t], {_} -> RandomChoice[{a, b}]],
p[sim, t]], {t, 1, 15}]
ただし、RandomRealの値を変更する場合は、何もしない場合よりも大きくする必要があるため、機能しないことはわかりますが、エラーメッセージは表示されません。
誰かが何が悪いのか教えてもらえますか?どんな助けでも大歓迎です!!