概率,它是指隨機事件出現的可能性大小的量度。隨機事件是指在相同條件下,可能出現也可能不出現的事件。例如,從一批有正品和次品的商品中,隨意抽取一件,“抽得的是正品”就是一個隨機事件。用數學方法我們會這么解決:設所有商品總共有n件,其中“抽得的是正品”事件出現了m次,即其出現的頻率為m/n。m/n為事件“抽得的是正品”出現的概率。那用編程的方法又該怎么解決呢?
抽獎就是經典概率問題,現在有6張紙條,其中有1張寫著一等獎,2張寫著二等獎,3張寫著三等獎?,F在隨機從中抽取一張,請問抽中一等獎的概率為多少?
由于6張紙條都有可能抽到,所以事件總數為6,其中抽到一等獎的事件數為1(因為一等獎只有一張),所以抽到一等獎的概率為1/6;二等獎的概率為2/6;三等獎的概率為3/6。
顏色搭配,一個口袋里裝有12個球,其中有3個是紅色的,3個是白色的,6個是黑色的?,F在從中任意取8個,請問有多少種不同的顏色搭配?
由于紅球有3個,白球有3個,黑球有6個,從中抽取8個球,組合的方案有很多。由于紅球和白球一共只有6個,所以8個球中一定有黑球,且黑球的個數一定是8減去紅球個數再減去白球個數;黑球個數最多是6個所以小于7個;紅球和白球個數最多是3個,最少的可能是0個,所以小于4個。
將以上條件通過列表分類,并將題意條件轉換為表達式。
我們可以采取枚舉算法依次假設,假設抽中紅球0個,白球0個,黑球個數為8-0-0=8個,但是8個黑色小球與表達式黑球<7相矛盾所以這個假設是不成立的不用計入結果列表中。下面我們再繼續(xù)假設白球個數為1個,得出黑球個數,看黑球個數是否小于7,依次假設并與所有已知表達式驗證,成功即找到一種搭配方案存入結果列表。
找到一種搭配方案后我們將這種由“紅球個數、白球個數、黑球個數”組成的字符串數據添加到列表中。
所謂列表,是一種復雜的存儲數據的容器,比普通變量高級,普通變量同一時間只能存儲一個數據,但是列表可以同時存儲多個數據,每個數據占領列表一項,列表的項數從1開始,數據格式如圖1。
如圖1所示為一個列表名為“我的列表”的列表,列表中總共存儲了10項數據,數據的編號(在列表中的位置)從1開始依次增加,列表每一項的數據為“第”+位置+“項數據”。
所以我們先建立一個名為“搭配方案”的列表,由于抽中的紅球白球黑球的個數都是未知的,所以建立3個變量,名字分別為紅球、白球、黑球。假設本次選中的紅球個數為0,白球個數為0,判斷黑球個數是否小于7,若成立,則猜想正確,將這種搭配方法加入列表中,否則,假設白球數量為1(白球+1),再驗證……以此類推,直到判斷完所有的可能。
具體程序如圖2。通過循環(huán)的嵌套,完成紅球從0到3,白球從0到3的所有情況,黑球設置為(8-紅球-白球),最內層的判斷是“黑球<7”。如果符合這個條件就符合所有已知條件了。將結果存入列表(如圖2)。
運行后我們可以看見列表中存儲的搭配方案有這些(如圖3):
總共有13種搭配方案。
通過本實例我們了解了“概率”概念,再次運用了關系運算的知識。掌握了通過編程解決概率問題的方法和步驟。