#include <stdio.h>
#include <math.h>
#include <time.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
int tosses, cir_nb, i;
double dub_x, dub_y, dub_r;
srand(time(NULL));
while (1) {
cir_nb = 0;
printf("Enter the number of tosses (2 < N <= 1000000) \n");
scanf("%d", &tosses);
if (tosses < 2 || tosses > 1000000)
continue;
for (i = 0; i < tosses; i++) { // 投掷 tosses 次
dub_x = (double)random()/RAND_MAX;
dub_y = (double)random()/RAND_MAX;
dub_r = sqrt(dub_x * dub_x + dub_y * dub_y); // 计算随机点是否落在圆内
if (dub_r <= 1) {
cir_nb++;
}
}
double pi = 4 * (double)cir_nb / tosses; // 因为 随机点落在圆和正方形的概率 和 面积等比
printf("PI : %f\n", pi);
}
return 0;
}
原文:https://www.cnblogs.com/yangxinrui/p/15228663.html