日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

蒙特卡罗类型概率算法

發布時間:2023/12/31 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 蒙特卡罗类型概率算法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

蒙特卡羅類型概率算法

蒙特卡羅算法:用蒙特卡羅算法能夠求得問題的一個解,但是這個解未必是正確的。求得正確解的概率依賴于算法所用的時間。算法所用的時間越多,得到正確解的概率就越高。蒙特卡羅算法的主要缺點就在于此。一般情況下,無法有效判斷得到的解是否肯定正確。其特點是判定問題的準確解,得到的解不一定正確。

【問題】設計一個求(圓周率)的蒙特卡羅型概率算法。

【解答】在邊長為2的正方形內有一半徑為1的內切圓,如圖所示。向該正方形中投擲n次飛鏢,假設飛鏢擊中正方形中任何位置的概率相同,設飛鏢的位置為(x,y),如果有+1,則飛鏢落在內切圓中。

? ? ? ?這里內切圓面積為,正方形面積為4,內切圓面積與正方形面積比為/4。若n次投擲中有m次落在內切圓中,則內切圓面積與正方形面積之比可近似為m/n,即/4m/n,或者4m/n。

? ? ? 由于圖中每個象限的概率相同,這里以右上角象限進行模擬。采用蒙特卡羅型概率算法求得程序如下:

#include <iostream> #include <stdio.h> #include <stdlib.h> #include <time.h> using namespace std;int randa(int a,int b) {return rand() % (b - a + 1) + a; } double rand01() { //產生一個[0,1]的隨機數return randa(0, 100)*1.0 / 100; }double solve() { //求π的蒙特卡羅算法int n = 10000;int m = 0;double x, y;for (int i = 0; i < n;i++) {x = rand01();y = rand01();if (x*x+y*y<=1.0) {m++;}}return 4.0*m / n;}void main() {srand((unsigned)time(NULL));//隨機種子cout <<"π="<<solve()<< endl;system("pause"); }

選擇出現頻率出現最高的即可。

?

總結

以上是生活随笔為你收集整理的蒙特卡罗类型概率算法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。