C++ 概率算法 利用蒙特卡羅算法計算圓周率


概率算法大致可分為4種形式:

數值概率算法;

蒙特卡羅算法;

拉斯維加斯算法;

舍伍德算法;

計算蒙特卡羅概率的算法實現:

 1 #include "stdio.h"
 2 #include "time.h"
 3 #include "stdlib.h"
 4 
 5 double MontePI(int n)
 6 {
 7     double PI;
 8     double x, y;
 9     int i, sum;
10 
11     sum = 0;
12     srand(time(NULL));
13     for (i = 1; i < n; i++)
14     {
15         x = (double)rand() / RAND_MAX;
16         y = (double)rand() / RAND_MAX;
17         if ((x*x + y*y) <= 1)
18             sum++;
19     }
20     PI = 4.0*sum / n;
21     return PI;
22 }
23 
24 int main()
25 {
26     int n;
27     double PI;
28 
29     scanf("%d",&n);
30     PI = MontePI(n);
31     printf("PI=%f\n",PI);
32     system("pause");
33     return 0;
34 }

注意 思想 的學習。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM