关于#c语言#的问题:计算圆周率

计算圆周率
每次随机产生两个[0,1]之间均匀分布的实数,判断该点是否在单位圆内。多次重复计算,看看产生的点落在单位圆内的概率。

通过参考搜索的资料,作了个实现如下:

参考链接:


https://www.zhihu.com/question/281043962

https://mp.weixin.qq.com/s?__biz=MzAxMjY5NDU2Ng==&mid=2651865268&idx=1&sn=a41ef46c1eb8bf34b250662182e754e1&chksm=804905fdb73e8ceb8d7bc1b88626f68151adbcb2cd0baeca00e831c0438727ad811578c5edf2&scene=27

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(void){
    
    int num;
    printf("请输入模拟次数:");
    scanf("%d",&num);
    
    double x,y,distance;
    int circleNums=0;
 // https://blog.csdn.net/weixin_57709996/article/details/123440399
 srand((unsigned)time(NULL)); 
    int i;
    for(i=0;i<num;i++){
        // https://www.zhihu.com/question/281043962
        x =  rand()/((double)(RAND_MAX));
        y =  rand()/((double)(RAND_MAX));
        
        
        
        distance= (x-1)*(x-1)+(y-1)*(y-1);
        
        
        if(distance<=1){
            circleNums++;
        } 
        
    //    printf("x=%f,y=%f,distance=%f,circleNums=%d\n",x,y,distance,circleNums);
                
    }
    
    // https://mp.weixin.qq.com/s?__biz=MzAxMjY5NDU2Ng==&mid=2651865268&idx=1&sn=a41ef46c1eb8bf34b250662182e754e1&chksm=804905fdb73e8ceb8d7bc1b88626f68151adbcb2cd0baeca00e831c0438727ad811578c5edf2&scene=27
    double result = circleNums*4.0/num;
    printf("%f\n",result);
    
    return 0;
    
} 

img