資訊內容
第9課 隨機探秘——數據的導出和分析
第9課 隨機探秘——數據的導出和分析
任務導航
色子恐怕是生活中最常見的隨機現象了,本課,我們使用Scratch編寫一個模擬投擲色子過程的小程序,讓小貓說出色子上當前的點數,如圖9.1所示。通過多次模擬投擲色子的過程,獲取數據,然后借助Excel來統計色子上每個點數出現的數目,研究隨機現象的規律,如圖9.2所示。
圖9.1 小貓說出色子的點數
圖9.2 數據匯總的結果(投擲300次)
任務分析
用可以讓一個角色說一個1到6之間隨機的整數,來模擬投擲色子的過程。可以使用圖9.3的代碼讓小貓說出當前的點數。
圖9.3 模擬擲色子的過程
程序的核心是隨機數,雖然我們在前面多次使用過隨機數,但是我們從來沒有系統地研究過隨機數這個重要的代碼,比如取500個1到6的隨機數,每個整數的數目是不是都是50個?
想一想
這是一個將程序作為研究工具的實驗,首先要回答以下兩個問題。
(1)研究的問題:你研究的問題是什么?對問題的答案你有什么猜想?
(2)使用的工具:你準備如何研究這個問題?要獲取多少組數據?如何存儲這些數據?你打算如何分析這些數據?
Follow Me
1. 獲取數據
獲取多組數據常常需要使用鏈表來存儲數據,如圖9.4所示。
圖9.4 用鏈表結果來存儲隨機數 |
按空格300次不難獲得300個隨機數,那么,怎么知道其中有多少個1呢?
2. 統計色子上每個點數出現的次數
統計色子上每個點數出現的次數可以采用很多種思路,如可以編一個程序來記錄1到6個數據各出現多少次;或者使用數據處理軟件,輔助完成統計的工作。
在科學研究中,雖然程序理論上可以解決所有的數據處理的問題,但是有時候限于現有的編程水平,或者追求更快的速度,常常需要結合應用軟件來完成數據處理工作。接下來介紹用Excel的排序功能來統計1到6出現的次數。
第1步:在鏈表上右擊,選擇“輸出”,如圖9.5所示,在彈出的對話框中選擇合適的存儲位置,將鏈表數據輸出為txt文件。
圖9.5 輸出鏈表數據
第2步:將txt文件中的數據復制粘貼在Excel中,如圖9.6所示。
圖9.6 數據存儲從鏈表轉換到txt文件再到Excel中 |
第3步:將數據從小到大排列,如圖9.7所示。
注意:在排列之前,請復制所有數據在工作表中,Sheet1用于保留原始數據。
圖9.7 將數據升序排列 |
第4步:數出每個數字的個數
方法有很多,比如看左邊的編號,或者選中所有的數字2的單元格,然后在Excel右下角會顯示出當前單元格的數目,或者把所有編號為2的單元格剪切、粘貼在旁邊的那一列。最終將數據匯總到Sheet3中,如圖9.8所示。
圖9.8 數據匯總的結果
實驗的結果和你之前的猜想一致么?和你周圍的同學們比較一下,實驗的結果相同么?
DIY
可以通過改進代碼,使用重復執行語句,增大數據量,讓計算機自動生成600個隨機數,代碼如圖9.9所示。
圖9.9 用重復執行語句生成600個隨機數 |
想一想
1.你的猜想正確么?
2.是不是數據量越大,每個數字出現的數目占總數目的百分比就越接近?
3.為了獲得更多的數據,能不能將其他同學的數據和自己的數據合并呢?
知識著陸
2. 設計:從獲取、分析數據的角度驗證猜想
3. 編程習慣:多種軟件共同使用提高效率
創作天地
1.有些同學提出繪制6個不同點數的篩子造型,用圖9.10的代碼來實現擲色子的效果,你也可以試一試。
圖9.10 用點數來模擬擲色子的過程 |
2.一位同學試圖改進圖9.10的代碼,卻出現了圖9.11的效果,你能幫他修改正確么?
圖9.11 造型點數和說的點數不一致 |
3.使用插入柱形圖按鈕,可以將選中的數據生成柱形圖,如圖9.12所示,你也可以試一試。
圖9.12用柱形圖來分析數據 |
視野拓展
編程的英文programming有“按照順序作一件事”的意思,意思是說程序中任何代碼都會經歷一段時間,就連循環也不例外,你可以試著做一個小實驗,按照圖9.13所示的代碼記錄100組循環時間求出每次循環所用的時間
圖9.13 循環100次所需要的時間研究
鏈表直接導出成Excel文件,更改擴展名txt為xls,實驗發現一個空循環100次所需要的時間大約是2.5秒,每次循環大約需要0.025秒,你可以研究一下這100組數據的最大值和最小值是多少,并思考影響循環時間的影響因素。
懂得了這個道理,就不難理解圖9.14所示的“秒表”程序為什么不能準確的計時了,事實上所有程序語言都有一個相對固定的循環時間,這是深入研究任何一門語言都要考慮的問題。
圖9.14秒表程序
