将原来你是小幸运大佬的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;
}
推荐文章
发表评论