どこかの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にでも応募してみますかね(来学期は忙しいからしない・できない)

学び

https://twitter.com/y_sni/status/964845683437060102