The Nature of Code閱讀心得與Python實作:0.1 Random Walks

更新於 發佈於 閱讀時間約 1 分鐘

標題中的random walk,中文通常翻譯成「隨機漫步」。既然有random這個字,可想而知,就會牽涉到亂數,而一看到亂數這兩個字,就知道免不了要拿個銅板丟一丟。不過,丟銅板跟走路要怎麼結合成「隨機漫步」呢?方法其實挺簡單的,先從最簡單的一維空間做起,再推展到二維空間。

一維空間指的是單一的直線,所以就只能向前走或向後走。銅板有正反兩面,那就規定正面代表向前走一步,反面代表向後走一步。既然每次丟銅板得到的正、反面結果是隨機的,根據這隨機的結果來向前走或向後走,當然就是隨機漫步了。

挺簡單的,不是嗎?一維隨機漫步的演算法就是這麼簡單。不過我們應該自問一下,有沒有什麼地方考慮得不完整的?我們規定正面向前走,反面向後走,那如果倒過來,規定正面向後走,反面向前走,這樣還是隨機漫步嗎?

很顯然的,既然丟銅板的結果是隨機的,那不管正、反面的走法怎麼規定,只要自始至終從一而終的按照規定走,最後就會是隨機漫步。這個結論在接下來的二維隨機漫步中,一樣會成立。

現在就來看看二維的隨機漫步要怎麼做。

二維空間是個平面,除了向前、向後走之外,還可以向左、向右走,所以總共會有四個方向可以走。丟銅板時,如果每丟兩次一組,那剛好會有正正、正反、反正、反反這四種排列組合。所以,如果規定一種組合對應一個方向,就可以隨機漫步了。

當然啦,就如同在一維隨機漫步中得到的結論一樣,正、反組合和行走方向間的對應關係,並不會影響最後的結果,只要從一而終,最後就是會隨機漫步。

除了一個銅板每丟兩次一組的做法外,也可以一次丟兩個銅板,結果同樣會有四種排列組合。至於要用一個或兩個銅板來做,就青菜蘿蔔各有所好,但憑個人喜好!

隨機漫步看似簡單,但卻是模擬許多自然界現象的基礎,相關的觀念及程式實作方式,對於瞭解這本書中會一再用到的亂數、機率、Perlin noise等工具,會有相當大的幫助。

avatar-img
15會員
131內容數
寫點東西自娛娛人
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
ysf的沙龍 的其他內容
在這一章中,會透過介紹在螢幕上模擬物體移動時,其背後的原理與實作方法,來介紹亂數(random number)、隨機分布(random distribution)、Perlin noise等,這些可以用來引入隨機性的工具。
在這一章中,會透過介紹在螢幕上模擬物體移動時,其背後的原理與實作方法,來介紹亂數(random number)、隨機分布(random distribution)、Perlin noise等,這些可以用來引入隨機性的工具。
你可能也想看
Google News 追蹤
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
〈練習觀察〉這裡提到稍微漫步一下也是一種方案,這裡做一點延伸。
Thumbnail
自由行不免迷路走錯方向,但只要有目標和方向,就能走到想去的地方。即使不清楚目標和方向,多走走,多看看,也能發現意想不到的驚喜。重要的是面對和處理所發生的事件,再繼續旅程。
Thumbnail
像一顆小石頭 旅行在不同的時空維度 途中 環境的碰撞 令我成方成圓 形成規矩 不論多麼想抓住岸邊的浮木 亦無法預測下一段的旅程 不論多麼想停留在舒心的時刻 亦無法挽留時光的流逝 但願學習放鬆心情 沉靜思緒 隨順時間的流 不以物喜不以己悲 選擇 對自己最舒
有些人走路就是一副風自飄零水自流的瀟洒風流模樣;而有些人就是四平八穩的官樣。而這些很難從模仿學習中得到,硬要學,可能只是邯鄲學步,怎麼看怎麼彆扭! 隨著年齡的增長,多少都累積了一些經驗,現在看到一個人走路的樣子,約摸就能判斷出一個人的個性,有時連品性也抓得岀來了! 畢竟在什麼樣的生活環境,會決定
Thumbnail
最近會試著寫一些統整類的文章, 幫助讀者、觀眾整理、吸收、複習已經學習到的演算法框架。 找零錢框架 在以前學過的題目中,我們已經學會了考零錢的抽象思考邏輯與框架,就是試著用每一種銅板去湊出n元(也就是找零錢的過程) 寫成虛擬碼或演算法,找零錢用了幾枚銅板可以這樣表達 # 銅板數目累加​
Thumbnail
走路是一種特別的閒暇活動,能夠讓人重新思考自己的內心世界。在城市裡悠閒地走路,觀察周圍的環境,可以讓人放慢腳步,享受自由的感覺。這種活動不需要太多的準備,也不需要太多的物質,只需靜心聆聽城市的聲音,並且獨自感受其中的美好。這是一種深度的心靈體驗。
Thumbnail
這篇文章探討了人們在生活中持續闖蕩的概念,並試圖在時間流逝中尋找自己的位置。文章描述了人們在時光中奔波的足跡,以及年輕時候的遺忘。
Thumbnail
Python 提供了一個功能豐富的標準函式庫,其中 random 專門用於生成隨機數。本文將介紹 random 的基本介紹,以及函式應用。
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
〈練習觀察〉這裡提到稍微漫步一下也是一種方案,這裡做一點延伸。
Thumbnail
自由行不免迷路走錯方向,但只要有目標和方向,就能走到想去的地方。即使不清楚目標和方向,多走走,多看看,也能發現意想不到的驚喜。重要的是面對和處理所發生的事件,再繼續旅程。
Thumbnail
像一顆小石頭 旅行在不同的時空維度 途中 環境的碰撞 令我成方成圓 形成規矩 不論多麼想抓住岸邊的浮木 亦無法預測下一段的旅程 不論多麼想停留在舒心的時刻 亦無法挽留時光的流逝 但願學習放鬆心情 沉靜思緒 隨順時間的流 不以物喜不以己悲 選擇 對自己最舒
有些人走路就是一副風自飄零水自流的瀟洒風流模樣;而有些人就是四平八穩的官樣。而這些很難從模仿學習中得到,硬要學,可能只是邯鄲學步,怎麼看怎麼彆扭! 隨著年齡的增長,多少都累積了一些經驗,現在看到一個人走路的樣子,約摸就能判斷出一個人的個性,有時連品性也抓得岀來了! 畢竟在什麼樣的生活環境,會決定
Thumbnail
最近會試著寫一些統整類的文章, 幫助讀者、觀眾整理、吸收、複習已經學習到的演算法框架。 找零錢框架 在以前學過的題目中,我們已經學會了考零錢的抽象思考邏輯與框架,就是試著用每一種銅板去湊出n元(也就是找零錢的過程) 寫成虛擬碼或演算法,找零錢用了幾枚銅板可以這樣表達 # 銅板數目累加​
Thumbnail
走路是一種特別的閒暇活動,能夠讓人重新思考自己的內心世界。在城市裡悠閒地走路,觀察周圍的環境,可以讓人放慢腳步,享受自由的感覺。這種活動不需要太多的準備,也不需要太多的物質,只需靜心聆聽城市的聲音,並且獨自感受其中的美好。這是一種深度的心靈體驗。
Thumbnail
這篇文章探討了人們在生活中持續闖蕩的概念,並試圖在時間流逝中尋找自己的位置。文章描述了人們在時光中奔波的足跡,以及年輕時候的遺忘。
Thumbnail
Python 提供了一個功能豐富的標準函式庫,其中 random 專門用於生成隨機數。本文將介紹 random 的基本介紹,以及函式應用。