好吧,回到棍子随便切成三段拼三角形的问题上,拼成三角形的条件应该是
X<Y+Z;Y<X+Z;Z<X+Y
而X+Y+Z=1,所以X<Y+Z可以变形为
X+X<X+Y+Z
X+X<1
X<0.5
同理
Y<0.5
Z<0.5
而Z<0.5等同于X+Y>0.5于是三个条件可以写成
①X<0.5;②Y<0.5;③X+Y>0.5
如图:

图中的有颜色区域表示合理的XY切割范围,超出此范围的切割结果无效
蓝色、红色、绿色区域分别表示①②③式不成立的范围,即拼成三角形的合理方式在黄色区域内,占总切割可能的1/4(25%)
当使用随机数进行重复验证时,用X=RANDOM(1);Y=RANDOM(1)生成的结果会有X+Y>1(即Z<0)的情况,处理手段有两种
简单方法是将这一次的结果进行忽略,不计入总数。当然有大约50%的计算结果会被忽略掉。
复杂一点的是用X=1-X;Y=1-Y将结果对应到可计算的范围里,计算过程会比较繁琐。
两种方法重复一段时间以后结果都会接近25%。
现在要说一说Y=RANDOM(1-X)。粗略想象一下就是X在所有结果里会均匀分布,即X>0.5导致结果“不是三角形”的概率要占到啊50%。
如下边的四个图:

第一个图是原始的分布情况,结果在X接近1,Y接近0的点附近堆积严重,其他位置几乎没有分布;
第二个图是样本数量>=1的点的分布情况,可以看到所有点都在X>0,Y>0,X+Y<1的“可能的切割情况”范围内;
第三个图是样本数量>=2的点的分布情况,已经可以看出点已经有明显向右下集中的趋势;
第四个图是把原图样本输0-6的部分更明显的显示出来了。