Python學習第128課——在Python中實現醉漢隨機遊走

2021-01-10 石問新

【每天幾分鐘,從零入門python編程的世界!】

這節我們在2D平面內實現隨機遊走。我們先把原理搞清楚,用代碼實現這個原理。

原理分析:

我們想像在2D平面內有一個x軸和y軸組成的坐標系,有一個人他是個醉漢,他以(0,0)為原點,隨機遊走,以x和y表示遊走後的坐標值,剛開始x=0,y=0。他每走一步之前,都需要先做一次選擇,選擇往東南西北哪一個方向去走,這個選擇我們需要先引入一個random庫,這是一個可以用來實現隨機數、隨機選擇的庫,用這個庫來實現隨機方向的選擇。東西南北我們分別用E、W、S、N這四個字母表示。選擇的結果我們用step這個變量保存。做出選擇之後他就會按照選擇的方向走一步,根據地理上北下南左西右東的原則,往東走一步就是x+1,往西走一步就是x-1,往南走一步就是y-1,往北走一步就是y+1。假如說這個醉漢連續走n步然後停一下,我們把這個過程看做一次隨機遊走,用一個函數來表示為--random_walk(n)。

這個表示隨機遊走的函數的代碼如下:

說明:choice()函數是random庫自帶的函數,它的參數是一個列表,這個函數的作用是從列表中進行選擇元素。

假設現在我們模擬這個醉漢完成10次隨機遊走,然後計算他最終的位置到原點的距離。應該怎麼做呢?

我們可以用勾股定理,因為原點是(0,0),所以最終的位置到原點的距離就是x的平方加y的平方開根號。

在這裡我們先不開根號,暫時就用x的平方加y的平方的結果,可以大概估算隨機遊走後的最終位置到原點的距離。

現在我們模擬這樣一個過程:就是假設這個醉漢連續走50步,算作完成一次隨機遊走,我們讓他做30次隨機遊走,每完成一次遊走看看他到原點的距離是多少,如果大於100,就輸出"It's too far away from home,I'm taking a taxi",如果小於100,就輸出"I'm walking home. "

代碼如下:

運行結果:

以上就是在Python中用代碼實現醉漢隨機遊走的過程。關於過程和原理,代碼中有注釋,很容易理解。

我是時問新,歡迎關注我。跟我一起從零開始學習Python,每天花一點時間,開啟python編程新世界的大門,領略新的風光,讓人生多一種可能!

相關焦點

  • Python學習第129課——醉漢隨機遊走代碼改進
    【每天幾分鐘,從零入門python編程的世界!】上節我們在Python中用代碼實現了醉漢隨機遊走的邏輯和過程,這節我們把上節的代碼改進一下。現在我們的小例子代碼是非常少的,實際開發中,有些項目代碼量會非常大,為了代碼在執行時有更快的速度,那麼就需要對代碼進行改進優化。
  • Python學習第130課——蒙特卡洛模擬隨機遊走
    【每天幾分鐘,從零入門python編程的世界!】之前我們用代碼實現了醉漢隨機遊走的過程。現在我們用蒙特卡洛模擬計算一下,醉漢在不同的條件下打車回家的概率。我們先定義幾個參數。how_many_steps,表示醉漢走多少步數算完成一次隨機遊走。foot_limit,表示醉漢超過出發的原點多少米就不走了,要打車回家。how_many_simulations,表示我們模擬多少次醉漢遊走的過程。taking_a_taxi_counter,表示我們模擬醉漢遊走一定的次數後,統計打車回家的次數。
  • Python學習第119課——numpy中的broadcasting
    【每天幾分鐘,從零入門python編程的世界!】這節課我們學習numpy中的數據的一個多變的特性--broadcasting,broadcasting的官方的說明比較麻煩,我們這裡把它簡化一下,就把它當做「腦補」的意思。我們舉例來說明。
  • Python學習第114課——numpy中ndarray的四則運算
    【每天幾分鐘,從零入門python編程的世界!】我們為什麼要學習numpy?numpy其實就是number+Python的簡寫,意思就是通過Python對數據進行處理。要對數據進行處理,就少不了最基本的加減乘除等操作。
  • python隨機函數random分配應用,隨機分配8名老師到3個教室中
    羽憶教程最近遇到一個問題,要隨機分配8名老師到3個辦公室中,這時小編想要了python中的隨機函數random來進行分配工作,感覺小編像個月老一樣。python隨機函數python隨機函數在python中,想要生成隨機數
  • 【乾貨】隨機森林的Python實現
    【新智元導讀】在機器學習中,隨機森林是一個包含多個決策樹的分類器,並且其輸出的類別是由個別樹輸出的類別的眾數而定。隨機森林幾乎是任何預測類問題(甚至非線性問題)的首選。本文介紹了隨機森林的原理、用途,以及用 Python 實現隨機森林的方法。
  • 機器學習、深度學習算法原理與案例實踐暨Python大數據綜合應用...
    共4天8節,講解機器學習和深度學習的模型理論和代碼實踐,梳理機器學習、深度學習、計算機視覺的技術框架,從根本上解決如何使用模型、優化模型的問題;每次課中,首先闡述算法理論和少量公式推導,然後使用真實數據做數據挖掘、機器學習、深度學習的數據分析、特徵選擇、調參和結果比較。
  • python字典操作大全,學習python第7天
    python字典跟列表類型,能存儲多個數據,並且還能在訪問元素的時候可以很快定位到需要的元素。而python字典操作方法有多少種呢?下面羽憶教程為您介紹。python字典python字典概念:python字典可以用來存儲任意類型對象,python字典都是由一個鍵和一個值組成的「鍵值對」,兩者之間用冒號隔開,結構如:sco = {'name':'小明','age
  • Python學習第117課——numpy中dot的運用舉例
    【每天幾分鐘,從零入門python編程的世界!】上節我們學習了最基礎的matrix的運算,可能有小夥伴覺得這都要涉及高等數學知識了,確實如果你想做數據科學、做人工智慧,統計學、概率論等數學知識,尤其是算法是繞不過去的坎,但是不要怕!!!
  • 中科大統計學python_python 中科大 - CSDN
    強調在知識的廣度、深度和趣味性之間尋找最佳平衡點,在生動幽默中講述數據挖掘的核心思想、關鍵技術以及一些在其它相關課程和教科書中少有涉及的重要知識點,適合對大數據和數據科學感興趣的各專業學生以及工程技術人員學習。
  • 玩轉Python 中的隨機數
    開發中我們經常遇到需要隨機數的場景,比如為了用戶密碼更安全我們有時會加鹽,也就是將用戶原密碼連接上一串隨機字符然後加密保存,又比如我們可能需要隨機展示某張圖片等等。今天,我們就來理一理 Python 中的隨機數的玩法,當然,這裡只涉及標準庫。
  • Python學習第112課——numpy中數組查找元素和改變元素的小技巧
    【每天幾分鐘,從零入門python編程的世界!】上節我們學習了如何利用index找到ndarray數組中的一些元素,並把找到的元素生成一個新的ndarray。代碼如下:現在我們學習幾個用index找到ndarray中元素的小技巧。
  • Python視頻教程網課編程零基礎入門數據分析網絡爬蟲全套Python...
    (6套課程) 注:零基礎全能篇中,針對windows和liunx系統均有兩套課程可供選擇學習,單純學python,哪個系統都一樣,初學者只需選擇自己熟悉的系統學習相應課程即可。基於liunx系統的python教程,課程裡也有liunx操作的詳細教學,不用擔心學習時不會操作liunx系統。
  • Python學習第90課-數據可視化之散點圖繪製
    【每天幾分鐘,從零入門python編程的世界!】今天我們學習散點圖,在統計學或者機器學習方面,或者在金融風險控制方面,金融風險控制經常要看異常交易、信貸風險,做這樣的分析就要用到一個圖--散點圖(scatter plot)。
  • Python學習第40課-Lambda表達式創建匿名函數
    【每天幾分鐘,從零入門python編程的世界!】之前我們學習了使用def關鍵字來創建自定義函數,這種方式創建的函數都是有函數名的,我們也可以創建沒有函數名的函數,這種函數叫做匿名函數。Python中可以使用Lambda表達式來創建匿名函數。
  • 成都學習Python開發哪家好
    開發 企業中RESTful開發越來越流行 千鋒python佔據就業新風口 融入VUE框架 課程融合vue前端框架,學習前端後端熱門實用技術 雲端部署項目 教學結合阿里雲
  • Python開發簡單爬蟲【學習資料總結】
    二、URL管理器和實現方法 防止重複抓取、防止循環抓取 URL是否在容器中 判斷是否還有帶待爬取URL 獲取待爬取URL 將URL從待爬取移動到已爬取 實現方式
  • Python學習第113課——numpy中用條件判斷去篩選數組中的元素
    【每天幾分鐘,從零入門python編程的世界!】之前我們學習了如何在numpy中查找數組元素的方法和技巧,現在我們學習如何用條件判斷的方式篩選數組的元素。●numpy中的數組可以直接進行比較直接上代碼:運行結果:我們看到,condition列印出來,它的結構和h的結構一樣。
  • 普通人學Python有意義嗎?學Python有前途嗎?-開課吧Python
    Pythonpython憑藉著第三方庫數量的龐大,其幾乎可以說是萬能的,對於普通人來說,數據表格excel基本上都有需要製作,而有一些編程基礎的,就可以使用庫openpyxl來實現excel表格的自動處理和生成,同時除了excel之外,針對word,ppt等python都有對應的庫。
  • 慢步學習,python語言編程,來扯扯語言的學習理解
    簡單解釋一下實例內容:引用 python-docx庫的Document模塊/函數/對象,打開目標操作文檔作為變量d,輸出目標操作文檔標題(即第一行內容,這個是筆者用來顯示操作前後變化用的),將修改後的標題內容賦值給變量changetotext,再將這個變量內文本賦值給目標操作文本。