S4E19 概率實(shí)驗難演示?(下)
在先前?S4E05概率實(shí)驗難演示?不存在的!?這文章中,介紹了隨機(jī)轉(zhuǎn)盤的制作方式,在這篇文章將來演示如何取得轉(zhuǎn)盤的結(jié)果,并繪制些統(tǒng)計圖表來顯示結(jié)果。

你將學(xué)會
1. 如何用腳本記錄實(shí)驗結(jié)果?
2. 如何使用表格文字?
3. 如何將統(tǒng)計結(jié)果繪制成圖表?
4. 如何用滑動桿調(diào)整坐標(biāo)軸的顯示。
提醒:本節(jié)前需要接續(xù)前一節(jié)?S4E05概率實(shí)驗難演示?(上)

4 累計統(tǒng)計結(jié)果

問:我希望可統(tǒng)計每次的結(jié)果,那我需要什么?
答:需要一個變數(shù)來記錄每個顏色出現(xiàn)的次數(shù)。
在此用 nums={0,0,0,0,0,0} 來記錄。
問:那這個記錄如何被更新呢?
答:每次按【轉(zhuǎn)】這按鈕時,需要觸發(fā)更新的操作。
問:那該如何更新呢?
答:每次新的結(jié)果記錄在變數(shù) new={0,0,0,0,0,0} 中,其中 new 只會在這次的結(jié)果所對應(yīng)的位置出現(xiàn) 1 ,接著再將 new 的結(jié)果更新到 nums 內(nèi)。
將 轉(zhuǎn)動 的【按鈕】加入以下腳本:
new = Sequence(If(k==resIndex,1,0),k,1,6)
#Sequence 序列
SetValue(nums, nums+new) ?
#SetValue 賦值
問:當(dāng)執(zhí)行多次后,nums 的記錄越多,如何重新開始呢?
答:需要用一個按鈕來,觸發(fā)記錄歸0的設(shè)定。
新增【按鈕】標(biāo)題為{重置}。腳本如下:
nums = {0,0,0,0,0,0}
問:除了計算次數(shù)外,如何一并計算出現(xiàn)頻率?
答:先取得 nums 的總次數(shù),再用序列分別計算每個顏色出現(xiàn)的頻率。
輸入以下 snums 記錄總次數(shù),再用 freqs 計算頻率。
snums = max(sum(nums),1)
freqs = Sequence(nums(k)/snums, k, 1,6)?#Sequence 序列
5. 顯示統(tǒng)計結(jié)果

問:如何顯示長條圖?
答:利用 BarChart 即可。
BarChart 指令的三個參數(shù)分別為 x?坐標(biāo),y坐標(biāo)與寬度
BarChart({1,2,3,4,5,6},nums,0.8) #BarChart 條形圖
問:這 {1,2,3,4,5,6} 是指什么
答:每一欄的 x 坐標(biāo)
問:0.8 又是指什么?
答:寬度
問:那統(tǒng)計的數(shù)字如何顯示呢?
答:利用 TableText可將多個list 以表格方式呈現(xiàn),輸入以下指令:
TableText(names,nums,freqs)?
#TableText 表格文本
問:如何加入標(biāo)題?
答:先用 Append 再每一列加入標(biāo)題文字,指令如下:
tnames = Append(
"顏色"
, names)
tnums = Append(
"次數(shù)"
, nums)
tfreqs = Append(
"頻率"
, freqs)?
#Append 追加
TableText(tnames,tnums,tfreqs)?
#TableText 表格文本
問:如何對齊表格與條形圖的位置?
答:利用 zoomin 來微調(diào)。
6. 優(yōu)化顯示統(tǒng)計

問:當(dāng)長條圖超出畫面可以如何調(diào)整。
答:利用一個滑動條,來設(shè)定縮放比例。
建一個滑動條 yscale,范圍從 1 到 4,在腳本中輸入以下代碼:
SetAxesRatio(1,yscale) #SetAxesRatio 設(shè)置坐標(biāo)軸比例
問:是否可讓每個長條圖不同顏色。
答:用 barChart 來繪制時,顏色相同。需用 Sequence 來完成,才能各別上色。
輸入以下六個指令,來調(diào)整六個長條圖的顯示。
C1s =?Sequence(Circle((1,k-0.5),0.5),k,1,nums(1))?#Sequence 序列
C2s =?Sequence(Circle((2,k-0.5),0.5),k,1,nums(2))
C3s?=?Sequence(Circle((3,k-0.5),0.5),k,1,nums(3))
C4s?=?Sequence(Circle((4,k-0.5),0.5),k,1,nums(4))
C5s?=?Sequence(Circle((5,k-0.5),0.5),k,1,nums(5))
C6s?=?Sequence(Circle((6,k-0.5),0.5),k,1,nums(6))
問:上面指令中的 Circle((6,k-0.5),0.5)?為何這樣寫呢?
答:Circle 表示圓, 第一個參數(shù)表示圓心,第二個參數(shù)表示半徑 0.5。
問:在最后的 k,1,nums(1) 的作用是什么呢?
答:因為第i 個 circle 的 y 坐標(biāo)為 k-0.5,k 要控制每個顏色要繪制的圓圈數(shù)。從第 1 個到 第 nums(i) 個。這個 nums(i) 就記錄第 i 個顏色出現(xiàn)的次數(shù)。
小結(jié)
這次教學(xué)主要展示數(shù)據(jù)的記錄與顯示。在問題拆解的主要結(jié)構(gòu)為:
1. 要記錄哪些資料:每個顏色出現(xiàn)的次數(shù)
2. 何時觸發(fā)記錄:按下按鈕時同時記錄
3. 如何呈現(xiàn)資料:條形圖、表格
在其他問題也可依照這個問題拆解方法,也期待你用這方法來實(shí)作其他記錄模擬問題:產(chǎn)生隨機(jī)性、作記錄、展示資料。
參考資料
【Bili】https://www.bilibili.com/video/av75148091?p=5
【Youtube】https://www.youtube.com/playlist?list=PLXH05kw-i_5IRktOSc1CPN7UzdWNY8VzR