clear;
nRounds = 1000000;
Data = rand(nRounds, 2);
nTriangles = 0;
for i = 1: nRounds
a = min(Data(i, 1), Data(i, 2));
b = max(Data(i, 1), Data(i, 2)) - a;
c = 1 - a - b;
if (a < 0.5) && (b < 0.5) && (c < 0.5)
nTriangles = nTriangles + 1;
end
end
disp(nTriangles / nRounds)
【 在 novicer 的大作中提到: 】
: 标 题: 一根棍子,摔成三段,能够拼成三角形的概率
: 发信站: 水木社区 (Fri Oct 27 20:56:03 2023), 站内
:
: 理论计算是25%,为什么我编程序只有20%?
:
: try_num = 1e5;
: a = rand(1,try_num);
: b = rand(1,try_num).*(1-a);
: C=1-a-b;
: abc =[a; b; c];
: abc_sort = sort(abc);
: good = 0;
: for ite = 1:try_num
: if abc_sort(1,ite)+abc_sort(2,ite)> abc_sort(3,ite)
: good =good+1;
: end
: end
: --
:
: ※ 来源:·水木社区
http://m.mysmth.net·[FROM: 36.113.146.*]
--
FROM 112.32.35.*