首頁 > 藝術

不用花錢也玩高爾頓釘板

由 壹零社 發表于 藝術2021-06-16

簡介、演算法練習——畫黃金螺旋線 斐波那契數列又稱黃金分割數列,而斐波那契螺旋線是在斐波那契數列為邊長的一些列正方形中繪製一個90度的弧線,將這些弧線連線起來組成的一條漂亮的螺旋線,又稱為“黃金螺旋”

黃金螺旋線怎麼畫

不用花錢也玩高爾頓釘板

高爾頓釘板問題是由英國生物統計學家高爾頓提出來的,這個問題的模型如圖1所示,小球從最上方被扔下,每經過一個釘子,都有一半的可能從左邊走,一半的可能從右邊走,當有很多個小球從上往下隨機掉落時,落在下面的格子裡的小球數量分佈上會呈現一定的統計規律,這個模型可以用來直觀地認識中心極限定理——機率論中討論隨機變數序列部分和分佈漸近於正態分佈的一類定理。這樣一塊高爾頓釘板淘寶上要賣上百元,我們用程式設計也能觀察到這種機率現象。

不用花錢也玩高爾頓釘板

說到機率就很容易想到遊戲用的骰(tóu)子,它可以產生隨機數1到6。當我們擲下一顆骰子時,每種點數出現的機率都是1/6;當我們擲下兩顆骰子時,一共有6×6=36種情況。兩顆骰子點數的和最小是2最大是12。

點數和為2,可能性只有(1,1)一種,機率為1/36。

點數和為3,可能性有(1,2),(2,1)兩種,機率為2/36=1/18。

點數和為4,可能性有(1,3)(2,2)(3,1)三種,機率為3/36=1/12。點數和為5的機率為5/36;點數和為6的機率為6/36=1/12;當點數和為7的機率和點數和為9的機率為4/36=1/9……當大家對所有的點數的機率分析完成後可以進行加和,驗證最終是否等於機率1。

頻率和機率一樣都是統計系統各元件發生的可能性大小的概念。不過機率是一個穩定的數值,也就是某件事發生或不發生的機率是多少。頻率是在一定數量的某件事情上面,發生的數與總數的比值。假設事件A在100次測試中發生了28次,那麼它的頻率是28/100=0。28,頻率是有限次數的試驗所得的結果,可能當測試無限次時A事件的機率為0。3。我們說骰子的每個數字出現的機率是1/6,僅僅幾次試驗是不具備統計規律的,只有投擲一定的數量,最終的頻率才會接近1/6。

我們用Scratch模擬投擲兩枚骰子的點數和,驗證一下高爾頓板的機率。角色使用圓球,先建立一個初始化積木,建立列表Results用1-12項來存放出現對應數字和的次數(投擲兩枚骰子不會出現點數和為1的結果)。變數total用來統計投擲的次數。變數roll記錄單次投擲兩顆骰子的點數和。一次roll,將total加1,roll設為2個1到6的隨機數之和,根據和將列表中的對應項記錄加1。

不用花錢也玩高爾頓釘板

下面將列表中的讀數作成柱狀圖,橫軸為投擲的點數和1到12,縱軸為出現的次數,最大值為500。每次投擲後在(X=-100+roll×25),(Y=-100+Results的第roll項/2)畫下一個圖章。為了使得柱狀圖更加好看,這裡我們可以採用改變顏色特效的方法,將顏色特效設定為Results的第roll項/6,這樣數量約接近500就越紅。

不用花錢也玩高爾頓釘板

當使用自定義函式後,主程式變得更加簡潔了。當投擲骰子點數和的機率某一項大於500時,停止投擲,顯示出的柱狀圖就是機率分佈圖。透過多次測試可以看出來結果頻數最高在7,且呈現正態分佈,是不是和高爾頓板展現出的效果一致。

透過學習Scratch程式設計,我們可以融入課堂學習的數學知識和生活中的小技巧。並且形象生動的展示數學帶給我們的魅力,擴充套件自己的思維,活學活用。

不用花錢也玩高爾頓釘板

演算法練習——畫黃金螺旋線

斐波那契數列又稱黃金分割數列,而斐波那契螺旋線是在斐波那契數列為邊長的一些列正方形中繪製一個90度的弧線,將這些弧線連線起來組成的一條漂亮的螺旋線,又稱為“黃金螺旋”。自然界中存在許多“黃金螺旋”的圖案,不得不感嘆大自然的鬼斧神工(圖1)。

不用花錢也玩高爾頓釘板

先思考斐波那契螺旋線的繪製演算法,需要產生符合斐波那契數列的數字(0,1,1,2,3,5,8,13……),這個數列可以用遞迴的方法定義F0=0,F1=1,Fn=F(n-1)+F(n-2)。接著按這個數列繪製出對應邊長的正方形並拼接在一起,然後繪製出對應的弧度進行組合完成“黃金螺旋”。

接下來思考用Scratch完成這個演算法需要將繪製過程分為幾個步驟。對應分成三個步驟:1。繪製正方形;2。計算斐波那契數列;3。繪製弧線(圖2)。

不用花錢也玩高爾頓釘板

開始程式設計,刪除小貓角色,新增鉛筆角色用於繪製正方形,在繪製前先在造型中將筆尖的位置調整到中心。初始化畫筆的粗細、角色大小、抬筆狀態。接下來考慮需要使用的變數,變數有三個:“正方形的邊長”,從圖中觀察到初始值是1;為了用遞迴產生斐波那契數列的數字,還需變數F1初始值0和F2初始值1。圖中有六個正方形,所以可以定義迴圈重複執行6次(也可以手動輸入其他迴圈次數)。增加兩個自制積木:“繪製正方形”和“計算斐波那契數列”;正方形的繪製比較簡單,就不細說了,用(“正方形的邊長”×30)讓方形大小更好看。需要注意一個細節,畫完一個正方形後下一個方形的起點不是在上一個正方形的終點,圖2中綠色箭頭標註的就是前三個正方形的起點,仔細分析知道畫完後還要移動兩次。繪製完一個方形後用自制積木“計算斐波那契數列”計算出下一個正方形的邊長。到這一步結束後,我們已經完成了所有正方形框的繪製。接下來是對弧線進行繪製了(圖3)。

不用花錢也玩高爾頓釘板

正方形用藍色繪製,螺旋用紅色繪製,所以需要建立一個新的空白角色用於繪製螺旋線。初始化筆畫粗細、起始位置、抬筆狀態。弧線角度為90度,重複執行10次,每次右旋轉9度。確定旋轉時移動的步數要稍微難一些。直接告訴你答案,這裡用(正方形的邊長×0。154)。為什麼是0。154倍呢?本來移動步長應該為以正方形邊長為半徑的弧線長的十分之一(πr/2÷10=0。157r),不過考慮到畫筆還有3的粗細,所以經過調整為0。154倍邊長。

不用花錢也玩高爾頓釘板

“黃金螺旋”只是數學中的六大經典螺旋之一,還有“費馬螺旋、阿基米德螺旋、雙曲螺旋”都是非常有意思的圖形,大家也可以去嘗試挑戰一下自己哦。

Tags:正方形點數繪製機率斐波