将原来你是小幸运大佬的Python版代码改写为C语言版代码,作为新手练习。原文链接如下:4只鸭子在同一个圆圈内游泳,问:4只鸭子出现在同一个半圆内的概率是多少?Python解答_原来你是小幸运的博客-CSDN博客_四只鸭子在同一个半圆的概率

#include

#include

#include

#include

int check(int a, int b, int c, int d)

{

if (a > 180)

{

a = a - 180;

}

int result = 0;

if (a <= b && b <= (180 + a))

{

result += 1;

}

if (a <= c && c <= (180 + a))

{

result += 1;

}

if (a <= d && d <= (180 + a))

{

result += 1;

}

if (result == 0 || result == 3)

{

return 1;

}

return 0;

}

int runone()

{

int duck1 = rand() % 360 + 1;

int duck2 = rand() % 360 + 1;

int duck3 = rand() % 360 + 1;

int duck4 = rand() % 360 + 1;

if (duck1 == duck2 == duck3 == duck4)

{

return 1;

}

if (check(duck1, duck2, duck3, duck4))

{

return 1;

}

if (check(duck2, duck1, duck3, duck4))

{

return 1;

}

if (check(duck3, duck1, duck2, duck4))

{

return 1;

}

if (check(duck4, duck2, duck3, duck1))

{

return 1;

}

return 0;

}

int main()

{

int count = 0;

double number = 10000000;

int i = 0;

srand((unsigned int)time(NULL));

for (i = 0; i < number; i++)

{

int x = 0;

x = runone();

if (x)

{

count = count + 1;

}

}

printf("四点在同半圆的次数 = %d\n", count);

printf("总实验次数 = %d\n", number);

double k = (count / number);

printf("四点在同半圆的概率 = %.10f", k);

//根据伯努利大数定理可知,实验次数越多,结果依概率收敛。

return 0;

}

推荐文章

评论可见,请评论后查看内容,谢谢!!!评论后请刷新页面。