《程序設(shè)計基礎(chǔ)計算機教學(xué)課件PPT》由會員分享,可在線閱讀,更多相關(guān)《程序設(shè)計基礎(chǔ)計算機教學(xué)課件PPT(14頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、1home back first prev next last 11 隨機數(shù)隨機數(shù)2home back first prev next last 隨機數(shù)及其應(yīng)用隨機數(shù)及其應(yīng)用 蒙特卡羅法應(yīng)用蒙特卡羅法應(yīng)用3home back first prev next last 隨機數(shù)是專門的隨機試驗的結(jié)果,其重要的特性隨機數(shù)是專門的隨機試驗的結(jié)果,其重要的特性是:它所產(chǎn)生的后面的那個數(shù)與前面的那個數(shù)毫是:它所產(chǎn)生的后面的那個數(shù)與前面的那個數(shù)毫無關(guān)系無關(guān)系 例如,擲硬幣,用例如,擲硬幣,用0和和1代表反、正面,可得到一個由代表反、正面,可得到一個由0、1組成的隨機數(shù)列組成的隨機數(shù)列 產(chǎn)生隨機數(shù)有多種不同的
2、方法,這些方法被稱為產(chǎn)生隨機數(shù)有多種不同的方法,這些方法被稱為隨機數(shù)發(fā)生器隨機數(shù)發(fā)生器 真正的隨機數(shù)是使用物理現(xiàn)象產(chǎn)生的:比如擲錢幣、骰真正的隨機數(shù)是使用物理現(xiàn)象產(chǎn)生的:比如擲錢幣、骰子、轉(zhuǎn)輪、使用電子元件的噪音、核裂變等等。這樣的子、轉(zhuǎn)輪、使用電子元件的噪音、核裂變等等。這樣的隨機數(shù)發(fā)生器叫做物理性隨機數(shù)發(fā)生器,它們的缺點是隨機數(shù)發(fā)生器叫做物理性隨機數(shù)發(fā)生器,它們的缺點是技術(shù)要求比較高技術(shù)要求比較高4home back first prev next last 在實際應(yīng)用中往往使用偽隨機數(shù)就足夠了。在實際應(yīng)用中往往使用偽隨機數(shù)就足夠了。這些數(shù)列是這些數(shù)列是“似乎似乎”隨機的數(shù),實際上它隨機的
3、數(shù),實際上它們是通過一個固定的、可以重復(fù)的計算方們是通過一個固定的、可以重復(fù)的計算方法產(chǎn)生的。計算機或計算器產(chǎn)生的隨機數(shù)法產(chǎn)生的。計算機或計算器產(chǎn)生的隨機數(shù)有很長的周期性。它們不真正地隨機,因有很長的周期性。它們不真正地隨機,因為它們實際上是可以計算出來的,但是它為它們實際上是可以計算出來的,但是它們具有類似于隨機數(shù)的統(tǒng)計特征。這樣的們具有類似于隨機數(shù)的統(tǒng)計特征。這樣的發(fā)生器叫做偽隨機數(shù)發(fā)生器。發(fā)生器叫做偽隨機數(shù)發(fā)生器。 5home back first prev next last 隨機數(shù)在編程中的應(yīng)用非常廣泛,例如隨機數(shù)在編程中的應(yīng)用非常廣泛,例如 游戲中,角色出現(xiàn)的位置和移動的方式游戲中
4、,角色出現(xiàn)的位置和移動的方式 科學(xué)計算和實驗?zāi)M,等等科學(xué)計算和實驗?zāi)M,等等6home back first prev next last 隨機生成一個數(shù)字,由玩家來猜。如果猜隨機生成一個數(shù)字,由玩家來猜。如果猜錯,提示猜大了或猜小了。如果猜對了,錯,提示猜大了或猜小了。如果猜對了,記錄猜測的次數(shù),游戲結(jié)束。記錄猜測的次數(shù),游戲結(jié)束。7home back first prev next last8home back first prev next last 蒙特卡羅(蒙特卡羅(Monte Carlo)算法計算圓周率的)算法計算圓周率的主要思想:主要思想: 給定邊長為給定邊長為R的正方形,畫其
5、內(nèi)切圓,然后在的正方形,畫其內(nèi)切圓,然后在正方形內(nèi)隨機打點,設(shè)點落在圓內(nèi)的概為正方形內(nèi)隨機打點,設(shè)點落在圓內(nèi)的概為P,則,則根據(jù)概率學(xué)原理:根據(jù)概率學(xué)原理:P = 圓面積圓面積 / 正方形面積正方形面積 PI * R * R / 2R * 2R = PI / 4。即即 PI=4P。這樣,當(dāng)隨機打點足夠多時,統(tǒng)計出來。這樣,當(dāng)隨機打點足夠多時,統(tǒng)計出來的概率就非常接近于的概率就非常接近于PI的四分之一了的四分之一了9home back first prev next last10home back first prev next last 由于由于 Scratch 本身的本身的原因,上面程序運原
6、因,上面程序運行需要一段比較長行需要一段比較長的時間,而且圓周的時間,而且圓周率計算的精度較低,率計算的精度較低,大概為大概為3.1左右。將左右。將來采取更專業(yè)的編來采取更專業(yè)的編程語言如程語言如C語言、語言、Java語言或語言或C#,會,會計算的更快更準(zhǔn)。計算的更快更準(zhǔn)。11home back first prev next last為了說明蒙特卡羅法計算為了說明蒙特卡羅法計算圓周率的原理,下面在上圓周率的原理,下面在上面的計算代碼中加入了動面的計算代碼中加入了動畫演示。畫演示。在邊長為在邊長為100的正方形內(nèi),的正方形內(nèi),隨機生成一個點的坐標(biāo)隨機生成一個點的坐標(biāo) (x,y),如果點到原點,
7、如果點到原點(0,0)的距離不大于的距離不大于100,說明,說明,這個點在以原點這個點在以原點(0,0)為圓為圓心,半徑為心,半徑為100的四分之的四分之一圓內(nèi)。下面程序中將角一圓內(nèi)。下面程序中將角色色1修改為只有一個像素修改為只有一個像素的紅點,利用圖章功能在的紅點,利用圖章功能在點點(x,y)畫一個紅點。畫一個紅點。12home back first prev next last編程求解如右圖所示不規(guī)編程求解如右圖所示不規(guī)則形狀紅色區(qū)域的近似面則形狀紅色區(qū)域的近似面積積提示提示 將圖片作為角色導(dǎo)入將圖片作為角色導(dǎo)入Scratch 繪制一邊長已知的正方形包繪制一邊長已知的正方形包含紅色圖形區(qū)域含紅色圖形區(qū)域 隨機生成正方形內(nèi)的點,統(tǒng)隨機生成正方形內(nèi)的點,統(tǒng)計與紅色區(qū)域碰撞的點數(shù)計與紅色區(qū)域碰撞的點數(shù) 計算正方形面積,點與紅色計算正方形面積,點與紅色區(qū)域碰撞的概率,以此求得區(qū)域碰撞的概率,以此求得紅色圖形區(qū)域面積紅色圖形區(qū)域面積13home back first prev next last14home back first prev next last 隨機數(shù)及其應(yīng)用隨機數(shù)及其應(yīng)用 蒙特卡羅法應(yīng)用蒙特卡羅法應(yīng)用