1. 程式人生 > >【小練習】迴圈、遞迴與概率:概率

【小練習】迴圈、遞迴與概率:概率

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接近 概率1