所屬專題:[遺傳](README.md);[概率論](README.md)
 
## 問題
**輸入:** 三個正整數`$ k $`, `$ m $`, `$ n $`,表示在一個包含了`$ (k+m+n) $`個個體的種群中,有`$ k $`個個體在某個等位基因上表現為純合顯性基因型,有`$ m $`個個體表現為雜合子,有`$ n $`個個體是純合隱性基因型。
**輸出:** 隨機選取的兩個個體進行交配產生的后代攜帶顯性等位基因的概率(該個體也表現為顯性性狀)。假設任何兩個個體都能成功交配。
**樣例數據:**
~~~
2 2 2
~~~
**樣例輸出:**
~~~
0.78333
~~~
 
## 背景知識
該問題涉及“孟德爾第一定律”的理解與應用,又稱為“分離定律”,指親代個體產生配子時,同一對等位基因會相互分離進入不同配子,每個配子僅攜帶一個等位基因的現象。該問題的計算過程要求掌握概率論的基礎知識。詳情請查閱ROSALIND網站上[關于該問題的背景說明](http://rosalind.info/problems/iprb/)。
 
## 解答
```
from scipy.special import comb
def prob_dom(k, m, n):
"""計算給定二倍體種群隨機交配的F1代表現為顯性性狀的概率。
參數說明:種群中有k個顯性純合子、m個雜合子、n個隱性純合子。
"""
c_total = comb(k+m+n, 2)
prob = 1*(1-comb(m+n, 2)/c_total) + 0.75*(comb(m, 2)/c_total) + 0.5*(comb(m, 1)*comb(n, 1)/c_total)
return prob
## --main--
with open("rosalind_iprb.txt", 'r') as f1:
k,m,n = map(int, f1.read().split())
result = prob_dom(k, m, n)
with open("rosalind_iprb_out.txt", 'w') as f2:
f2.write(str(result))
```