2022年3月31日

scratch作丟硬幣活動模擬遺傳法則

 歷年各版教科書中,在孟德爾遺傳法則的課程中,有一個活動是用來模擬遺傳法則的,大致上像這樣:

兩人一組,每人兩張紙卡,分別寫上A和a,或是每人一個硬幣,以人頭當A,字當a。接下來每個人隨機丟出一張紙卡或是投擲硬幣,模擬生小孩,把兩人出的A/a組合在一起就成了下一代的基因型。

重複這個步驟10次後,計算AA、Aa、aa 的數量,並計算顯隱性的比為多少,理論上Aa x Aa的子代中,顯隱性的比值是3,但是實際上全班作這樣的活動下來,真的能拿到比值為3的組數十分稀少。即便把全班的數據都加在一起平均,恐怕也還是拿不到3。

當然,我們知道比值為3這件事,得在數量夠大的情況才能達到,但是數量到底要多大呢?


我用Scratch寫了一個視覺化的程式來模擬看看。這裡可以調整的參數有兩個,第一個是每組生幾個,也就是兩人一組作活動,一組規定產生幾個子代。第二個是總共有幾組參加活動。

若是依照一般教科書活動中的參數來進行,每組生10個子代,全班分成15組,會發生什麼結果呢?當你按下一次「生吧」的按鈕,就代表全班都進行了一輪這樣的活動,你會發現右下角的長條圖從比值為1到比值為9的,通通都有。而圖表上的平均值和標準差,則幾乎都呈現Infinity,這是因為其中有一組以上根本沒有生出aa,以至於無法計算比值,進而就無法統計全班的平均值和標準差了。



你多按幾下有機會用這樣的參數,能生出可以計算平均值標準差的情況。但即便能計算,能算出平均值為3的機會也很少。



注意我這邊計算的平均值和標準差是將各組的比值進行統計,而非一般教室進行時,將全班的AA、Aa、aa合併數量計算單一平均值。如果是後者的計算方式,那等同於全班只有一組,共生150個孩子的模式。雖然總數是一樣的,但統計上的意義完全不同。




我們把數據調極端一點來看,如果依舊是每組生10個,但是共有1000組進行活動,那會是怎樣呢?全班的數據分佈情況非常廣,而因為每組只有生10個,所以很容易出現沒生出aa的情況,所以平均值和標準差就無法計算了。


但如果每一組生的小孩數量多一些呢?例如,一組生100個,而共有1000組進行,則我們會觀察到分佈圖呈現集中在3,往兩端的數據會減少。


而逐步將每組生的數量提高後,分佈情形會開始往中間集中,也就是標準差漸少的情況


如果你對這樣的模擬有興趣,可以到下面這個連結試試看。

https://scratch.mit.edu/projects/667462387