均匀采样(x,y,z)使得x + y + z = 0

时间:2018-01-22 00:22:30

标签: random geometry

我试图从所有点(x,y,z)的集合中均匀地采样,使得x + y + z = 0并且-1< = x< = 1,-1< = y< = 1并且的-1; = z,其中; = 1

我的想法如下:我从6维单形(this suggestion之后)均匀地采样,即从点(a,b,c,d,e,f)的集合中采样,使得a + b + c + d + e + f = 0且0 <= a <= 1,0 <= b <= 1,0 <= c <= 1,0 <= d <= 1,0 <= e <= 1并且0 <= f <= 1。 从几何学角度来看,满足所有点的集合(1)是具有顶点(-1,1,0),( - 1,0,1),(0,-1,1),(1,-1,0)的六边形我计算过,(1,0,-1)和(0,1,-1) (x,y,z)= a *( - 1,1,0)+ b *( - 1,0,1)+ c *(0,-1,1)+ d *(1,-1,0) )+ E *(1,0,-1)+ F *(0,1,-1)。 我按照这种方法抽样了50万分,但不幸的是,这些分数看起来并不均匀。

Here is a plot

有人知道这个问题是什么以及如何纠正它?

1 个答案:

答案 0 :(得分:1)

你的六边形由三个平行四边形组成。因此,值得随机选择其中一个平行四边形,然后在所选择的一个内均匀生成点。

平行四边形的基本向量:

v[0][0] = (-1,1,0)
v[0][1] = (0,-1,1)
v[1][0] = (0,-1,1)
v[1][1] = (1,0,-1)
v[2][0] = (1,0,-1)
v[2][1] = (-1,1,0)

生成步骤:

np = randominteger(0..2)
t = randomfloat(0..1)
u = randomfloat(0..1)
point = t * v[np][0] + u * v[np][1]