【小練習】迴圈、遞迴與概率:概率
阿新 • • 發佈:2018-12-13
1.練習程式碼-隨機在正方形裡面落1000個點,落在正方形內切圓中的點有多少個
#include "stdafx.h"
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#define LOOP 1000
int _tmain(int argc, _TCHAR* argv[])
{
int rgnC = 0;
for (int i=0; i<LOOP; i++)
{
int x = rand();
int y = rand();
if (x*x + y*y < RAND_MAX *RAND_MAX)
rgnC++;
}
printf("%d\n", rgnC);
}
2.關鍵點分析
2.1計數過程
#include "stdafx.h"
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#define LOOP 1000 //1000個點
int _tmain(int argc, _TCHAR* argv[])
{
int rgnC = 0; //計數,計算落在圓內的點數
for (int i=0; i<LOOP; i++)
{
int x = rand(); //隨機落點的x座標
int y = rand(); //隨機落點的y座標
if (x*x + y*y < RAND_MAX*RAND_MAX) //正方形邊長為RAND_MAX*2,內切圓半徑為RAND_MAX
rgnC++;
}
printf("%d\n", rgnC);
}
2.2運算結果
當實驗次數越大,(圓內落點數/總落點數) = 圓面積/正方形面積 = pi/4 此次程式得到778,778/1000 = 0.778, 與pi/4接近