首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >生成3个和为0的均匀随机变量

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

Stack Overflow用户
提问于 2012-10-22 17:26:29
回答 3查看 1.2K关注 0票数 4

我想生成三个随机变量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。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 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。而且它只需要调用随机生成器一次。

票数 1
EN

Stack Overflow用户

发布于 2012-10-22 17:35:44

它们会均匀分布吗?

我会说掷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种组合,只有1种3,3,3种组合。这是19种可能的组合( 125种可能的情况)。

在这些中,我们得到了这些骰子被掷了这些次数。(记住,在2, 2,5中,你每2个就数3*,所以这就是6卷2)。

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

<代码>H1215: 9

因此,虽然原始分布是均匀的,但一旦你加入约束,你就会看到它不再是均匀的。(请注意,这些数字加上57作为确认,19个不同的组合,每个组合有3次抛出)。

票数 1
EN

Stack Overflow用户

发布于 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的分布,类似于:

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13008383

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档