最近有个问题火了起来:$4$只小鸭子随机落在圆形池塘内,它们落在的同一个半圆内的概率是多少?
严格证明还要用到积分,我好废物根本不会,所以写了个$cpp$验证下,答案是$0.5$,哥哥们可以证明试试。
#include <bits/stdc++.h>
#define DBG(x) cerr << #x << " = " << x << endl
using namespace std;
typedef long long ll;
int deg() {
int ret = rand() ^ 114514 ^ 991;
return (int)(ret % 360 + 360) % 360;
}
bool in(int l, int r, int x) {
return (l <= x && x <= r);
}
bool ck(int d1, int d2, int d3, int d4) {
int l, r, x = d1, y = (d1 + 180) % 360;
l = min(x, y);
r = max(x, y);
if (in(l, r, d2) && in(l, r, d3) && in(l, r, d4)) return true;
if (!in(l, r, d2) && !in(l, r, d3) && !in(l, r, d4)) return true;
return false;
}
bool solve() {
int d1 = deg(), d2 = deg(), d3 = deg(), d4 = deg();
if (ck(d1, d2, d3, d4) || ck(d2, d1, d3, d4) || ck(d3, d1, d2, d4) || ck(d4, d1, d2, d3)) return true;
return false;
}
int main() {
srand(time(NULL));
int n = 1000000, tot = 0;
for (int i = 1; i <= n; i++) {
tot += (int)solve();
}
printf("%.10f\n", (double)tot / (double)n);
}
原文:https://www.cnblogs.com/DuskOB/p/12163523.html