生成3个均匀的随机变量,总和为0

时间:2012-10-22 09:26:29

标签: random statistics distribution

我想生成三个随机变量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 *兰特() - 1; C = -A-B。

以下解决方案不起作用,因为c不均匀分布:a = 2 * rand() - 1; B = 2 *兰特() - 1; C =( - A-B)/ 2

3 个答案:

答案 0 :(得分:1)

他们会分布均匀吗?

我会说扔3个骰子,但预期的值是10.5,这是永远不会发生的,所以我要说扔3个特殊骰子只能从1到5运行,并且它们必须总和为9。

可能的组合是:

  • 1,3,5(* 6)
  • 1,4,4(* 3)
  • 2,2,5(* 3)
  • 2,3,4(* 6)
  • 3,3,3(* 1)

有1,3,5和2,3,4的6种组合,1,4,4和2,25的3种组合以及3,3,3的仅一种组合。这是19种可能的组合(在125种可能的情况中)。

在这些中,我们得到这些骰子这些次数。 (请记住,在2,2,5中,每2个计算3 *,所以这是6卷2)。

  • 1:9
  • 2:12
  • 3:15
  • 4:12
  • 5:9

所以虽然原始分布是统一的,但是一旦你加入约束,你就会发现它不再是统一的。 (请注意,这些数字加为57作为确认,19种不同的组合,每次有3次投掷。)

答案 1 :(得分:1)

在我们知道您的要求是否可能之前,您可能会对稍微不同的问题的答案感兴趣:

  

是否有可能有三个均匀分布的变量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的分布将大约为。看起来像这样:

enter image description here

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

enter image description here

答案 2 :(得分:1)

吴,你是对的,有一个解决方案。这是建筑。生成a = 2 * rand() - 1。现在,如果< 0,然后让b = a + 1.否则,设b = a - 1.最后,设c = - (a + b)。

显示a,b和c在[-1,1]上均匀分布是不太难的。有趣的是,解决方案是对称的,因为所有三个成对相关都是-1/2。它只需要一次调用随机生成器。