我想生成三个随机变量a,b和c,使得(i) a+b+c=0;和(ii)每个变量在(-1,1)中均匀分布。
双变量版本很简单: a=2*rand()-1;b=-a。(注: rand()在(0,1)中均匀分布)
以下解决方案不起作用,因为c的范围太大: a=2*rand()-1;b=2*rand()-1;c=-a-b。
以下解决方案也不起作用,因为c不是均匀分布的: a=2*rand()-1;b=2*rand()-1;c=(-a-b)/2。
发布于 2013-10-03 06:18:27
伍,你说得对,这是有办法的。这是构造。生成a= 2*rand()-1。现在如果a< 0,则设b=a+ 1。否则,设b=a- 1。最后,设c= -(a+b)。
证明a,b和c在-1,1上均匀分布并不太难。有趣的是,解决方案是对称的,因为所有三个成对相关都是-1/2。而且它只需要调用随机生成器一次。
发布于 2012-10-22 17:35:44
它们会均匀分布吗?
我会说掷3个骰子,但是期望值是10.5,这是永远不会发生的,所以我会说扔3个特殊的骰子,从1到5,它们的总和必须是9。
可能的组合包括:
1,3,5和2,3,4有6种组合,1,4,4和2,25有3种组合,只有1种3,3,3种组合。这是19种可能的组合( 125种可能的情况)。
在这些中,我们得到了这些骰子被掷了这些次数。(记住,在2, 2,5中,你每2个就数3*,所以这就是6卷2)。
<代码>H1215: 9
因此,虽然原始分布是均匀的,但一旦你加入约束,你就会看到它不再是均匀的。(请注意,这些数字加上57作为确认,19个不同的组合,每个组合有3次抛出)。
发布于 2012-10-22 19:49:02
在我们知道您的要求是否可行之前,您可能会对另一个稍有不同的问题的答案感兴趣:
有没有可能有三个均匀分布的变量a,b,c,使得它们的总和总是为零?,
,a,b,c?
答案是肯定的:以三个均匀分布的变量a0,b0,c0为例,使用s=a0+b0+c0可以得到a=a0-s/3,b=b0-s/3和c=c0-s/3,并具有所需的属性。如果你从a0,b0,c0 = 1.5*rand()-0.75开始,得到的a,b,c将在-1,1中,a,b,c的分布将近似。看起来像这样:

现在,如果你想让a,b,c更接近于-1,1上的均匀分布,你可以尝试像a0,b0,c0 = 0.75*(2*rand()-1)^(1/3)这样的东西,它将产生a,b,c的分布,类似于:

https://stackoverflow.com/questions/13008383
复制相似问题