Python算法設計(八)

2021-02-24 Maker陳
蒙特卡洛法

蒙特卡洛方法又稱統計模擬法,隨機抽樣技術,是一種隨機模擬方法,以概率和統計理論方法為基礎的一種計算方法。是使用隨機數來解決很多計算問題的方法。將所求解的問題同一定的概率模型相聯繫,用電子計算機實現統計模擬或抽樣,以獲得問題的近似解。為象徵性地表明這一方法的概率統計特徵,故借用賭城蒙特卡羅命名。

17世紀時,人們就知道用事件發生的「頻率」來決定事件的「概率」。這也是蒙特卡洛法的基本思想。當樣本數量足夠大時,我們可以用頻率去估計概率。這也是求圓周率π的常用方法。

求圓周率π

在只有一個隨機數生成器的情況下如何估計π的大小?

當我們在(-1, 1)的範圍內隨機選擇一個坐標(x, y)時,每個坐標點被選中的概率相等。則坐標落在直徑為1的正方形中的圓的概率為:

切比雪夫不等式可知,在生成大量隨機點的前提下我們能得到儘可能接近圓周率的值

Python算法實現

import numpy as np
def pi(n, batch=1000): t = 0    for i in range(n // batch):     # 隨機獲取坐標        p = np.random.rand(batch, 2)        p = (p * p).sum(axis=1)     # 計算坐標平方和        t += (p <= 1).sum()         # 平方和小於1的即為落在圓中的點 print(4 * t / n)
pi(10 ** 4)pi(10 ** 7)pi(10 ** 8)

輸出結果

如圖所示,生成大量隨機點的前提下我們能得到儘可能接近圓周率的值

                喜歡的話就掃描下方的二維碼吧!

                       加入「欺騙大師」共討程序

                   

相關焦點

  • 遺傳算法Python實戰 004.八皇后問題
    遺傳算法Python實戰 004.八皇后問題寫在前面的話本節我們主要講解如何使用遺傳算法解決八皇后問題
  • 加快Python算法的四個方法(二)Numba
    CDA數據分析師 出品相信大家在做一些算法經常會被龐大的數據量所造成的超多計算量需要的時間而折磨的痛苦不已,接下來我們圍繞四個方法來幫助大家加快一下Python的計算時間,減少大家在算法上的等待時間。今天給大家介紹Numba這一塊的內容。1.簡介所以什麼是Numba呢?
  • 機器學習、深度學習算法原理與案例實踐暨Python大數據綜合應用...
    原標題:機器學習、深度學習算法原理與案例實踐暨Python大數據綜合應用高級研修班通信和信息技術創新人才培養工程項目辦公室 通人辦〔2018〕 第5號 機器學習、深度學習算法原理與案例實踐暨Python
  • 一文讀懂遺傳算法工作原理(附Python實現)
    目錄 1、遺傳算法理論的由來 2、生物學的啟發 3、遺傳算法定義 4、遺傳算法具體步驟 5、遺傳算法的應用 你也許在想:這句話和遺傳算法有什麼關係?其實遺傳算法的整個概念就基於這句話。實現該部分的自動處理需要用到遺傳算法。 我們這裡不深入講解,而是直接應用它。為了能夠使用 TPOT 庫,你需要先安裝一些 TPOT 建立於其上的 python 庫。
  • 高斯混合模型(GMM):理念、數學、EM算法和python實現
    高斯混合模型是一種流行的無監督學習算法。GMM方法類似於K-Means聚類算法,但是由於其複雜性,它更健壯,更有用。K-means聚類使用歐式距離函數來發現數據中的聚類。只要數據相對於質心呈圓形分布,此方法就可以很好地工作。
  • 13個小案例輕鬆認識python
    python流行一段時間了,開始的就感覺只是一種新的語言罷了,可是這個世界總是對新事物非常尊崇,平時用的不多,看起來也沒多大動力,結合著平時講VB(信息技術《算法與程序設計》9講)的套路,用案例簡單自學下python,這13個小案例不像網絡上的圖形處理等那麼酷炫,不能做出酷炫的作品,也沒有涉及基礎的算法,但也是python的基礎吧
  • Leetcode42 超過97%的算法 接雨水@python
    Leetcode42 python codeLeetcode 42 接雨水,複雜度O(n)基本思路:先找到最高的柱子以及位置,然後分別用兩條指針,分別從兩端向最高的柱子靠近,如果柱子大於前面柱子的最大值則不存在積水
  • 加快Python算法的四個方法(三)數據並行化
    CDA數據分析師 出品相信大家在做一些算法經常會被龐大的數據量所造成的超多計算量需要的時間而折磨的痛苦不已,接下來我們圍繞四個方法來幫助大家加快一下Python的計算時間,減少大家在算法上的等待時間。以下給大家講解關於數據並行化這方面的內容。
  • 【算法系列】凸優化的應用——Python求解優化問題(附代碼)
    推薦閱讀   Sklearn包含的常用算法  隨機森林算法入門(python)  下降方法:坐標下降、梯度下降、次梯度下降>  機器學習算法Python實現--邏輯回歸  機器學習算法Python實現--線性回歸分析  【機器學習算法系列】機器學習中梯度下降法和牛頓法的比較  【機器學習算法系列】如何用Apriori尋找到繁雜數據之間的隱藏關係  後臺回復「代碼
  • Python入門小迷宮,走完這個迷宮,就能掌握python編程基礎
    這是一個很神奇的迷宮,走完這個迷宮就能掌握python基礎。其實,這是一個用python做的迷宮小遊戲,非常簡單,但對於python初學者來說,還是有一定的挑戰性,但TONOW有源碼和教程,只要跟著python迷宮小遊戲的教程和相應的源碼,不僅很容易就能自己開發出這個遊戲,還能在這個過程中,掌握python編程的基礎哦!
  • 廣州Python測試培訓
    主要內容: Python不同系統環境搭建、Linux常用命令、編輯器使用、伺服器及搭建、Python基本語法、python控制語句、Python模塊、Python模塊設計、Python函數、Json數據操作、Python文件操作、Python異常處理。
  • 成都Python培訓周期多久
    成都python培訓哪個更專業? Python的設計目標之一是使代碼具有很高的可讀性。它被設計成使用標點符號和其他語言中常用的英語單詞,使代碼看起來整潔美觀。現在成都有很多python培訓學校。
  • Python開發簡單爬蟲【學習資料總結】
    語言基礎:(帶你熟悉python語言的特性,學會使用python開發環境,使用python開發一些簡單的案例) (1)Python3入門,數據類型,字符串 (2)判斷/循環語句,函數, (3)類與對象,繼承,多態 (4)tkinter界面編程
  • 算法工程師路線圖(經驗濃縮,純乾貨!)
    說起算法(Algorithm),需要值得注意的是,數據結構與算法,機器學習算法都可簡稱為算法,但兩者是完全不同的。數據結構與算法是計算機科學中的一門基礎課程,主要內容是關於如何設計電腦程式,使得程序能夠運行更快,佔用內存更少。通常所說的程式設計師面試要刷算法題,指的便是數據結構與算法中的算法。
  • python求兩個數的最大公約數
    python求最大公約數1.python求最大公約數設計思路給定兩個數,從1開始嘗試,步長為1逐漸遞增,為了優化算法,只需要循環到兩個數中最小的那個數就可以。所以,第一步就是計算出兩個數中最小的數,然後利用for循環從1到最小的那個數進行枚舉,如果該數能夠同時被兩個數整除,則記錄下來,直到循環結束,最後,最大的這個就是最大公約數。
  • Python視頻教程網課編程零基礎入門數據分析網絡爬蟲全套Python...
    因篇幅有限,以下展示的只是課程裡部分內容如對python課程有更多疑問 請諮詢客服 1零基礎入門全能班 01 –python簡介 02 第一個程序 03-python執行方式和pycharm設置 04-程序的注釋和算術運算符 05 程序執行原理 06變量的使用以及類型 07
  • 資料|《常用數據挖掘算法總結及 Python 實現》
    今日資料推薦《 常用數據挖掘算法總結及 Python 實現 》這份資源非常適合相關的從業人員或大數據愛好者,該文檔總結了常用的數據挖掘的算法原理以及 Python 實踐內容,為初學者提供良好的參考資料機器學習概述第三部分:監督學習--分類與回歸第四部分:非監督學習--聚類與關聯分析第五部分:Python 數據預處理第六部分:數據結構與算法
  • 小白學數據:教你用Python實現簡單監督學習算法
    為了獲得更高的精度,最好的方法是測試多個不同的算法,同時,對每個算法嘗試不同的參數。可以通過交互檢驗選擇最好的算法和參數。對於給定問題,在選取算法時,算法的精度、訓練時間、線性、參數數目以及特殊情況都要考慮在內。
  • 成都學習Python開發哪家好
    如何選擇成都python培訓機構? python程式語言語法清晰、乾淨、易讀、易維護、代碼量小、可讀性強。當團隊合作開發時,閱讀別人的代碼將是非常迅速和高效的。通俗說來就是「寫起來快、看起來明白!」所以近年來,python開發非常流行。
  • Python和人工智慧有什麼關係?Python 和人工智慧的區別是什麼?
    人工智慧是一個大的範疇,包括很多方面的應用,比如機器學習,在機器學習中的回歸算法,它們是通過統計分析所有數據來建立多因式,然後求解式子,而在這個過程中程式語言起到的作用是清洗數據、處理數據、建立關係求解結果的作用,python適用於數據清洗且學習成本低,所以在一定程度上,好一部分人傾向於將python應用於人工智慧應用領域。