どこかのPython課題について
https://twitter.com/y_sni/status/964842009327427584
正規化の前後で変数を使い回しているのが気持ち悪いと思った。P言語の入門なんだからもっとわかりやすい変数名にしてほしい。
書いた(問13-1)
def bloodAB( AA, AB, BB, n ): sum = AA + AB + BB AA /= sum AB /= sum BB /= sum for i in range(0, n): nAA = AA*AA + AA*AB/2 + AB*AA/2 + AB*AB/4 nAB = AA*BB + AA*AB/2 + AB*AA/2 + AB*AB/2 + AB*BB/2 + BB*AA + BB*AB/2 nBB = BB*BB + AB*AB/4 + AB*BB/2 + BB*AB/2 AA = nAA AB = nAB BB = nBB return( [AA, AB, BB] )
コード例ではAB型同士からはAA型, BB型は生まれないことになっている。謎。生物学わからない。
AB型同士からもAA型,BB型が生まれることにすると結果の正規化が必要なくなり, 次世代の確率を次のループの確率に代入するだけの見通しがいいコードになる。 (めちゃくちゃな入力がされる可能性がある最初だけ正規化している)
正規化したいなら〇〇=n〇〇のところでするときれい
(確率の合計を1にすることを「正規化」と呼んでいたが, 本当にそうなのか不安になってきた)
感想
スイッチを交換したキーボードを試すいい機会になった。
https://twitter.com/y_sni/status/964848216263962624
大学生は何らかの繋がりで情報学群生を頼るだろうから, N高のTAにでも応募してみますかね(来学期は忙しいからしない・できない)