【问题标题】:sampling uniformly (x,y,z) such that x+y+z=0均匀采样 (x,y,z) 使得 x+y+z=0
【发布时间】:2018-01-22 00:22:29
【问题描述】:

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

我的想法如下:我从 6 维单纯形(遵循this suggestion)中均匀采样,即从点集 (a,b,c,d,e,f) 中采样,使得 a+b+c +d+e+f= 0 和 0

有人知道这是什么问题以及如何解决吗?

【问题讨论】:

  • 引用源答案:“...如果您从超立方体中均匀采样,这不会给您在单纯形中的均匀采样。但是,如果您使用适当的从超立方体中采样指数分布,比这个效果抵消了。"
  • 不,我正在做一个算法,其中一个人对 n-1 个点进行排序,然后取差异。这就是直接在您所指的算法之上提出的算法。
  • 是的,那个没有给出想要的结果,但是归一化指数的那个可以。
  • 引用他的回答(强调我的):“对于您的问题,这意味着您从区间 (0,1) 中获取 n−1 个随机数,然后添加 0 和 1 得到n+1 个数字的列表。您对列表进行排序,然后记录两个连续元素之间的差异。这将为您提供一个由 n 个数字组成的列表,总和为 1。此外,此采样是统一的。 这个想法可以在 Donald B. Rubin, The Bayesian bootstrap Ann. Statist. 9, 1981, 130-134 中找到。”
  • 得到的采样点分布是均匀的,但不是随机数分布。 OP 首先使用 (0, 1) 的朴素均匀分布并表明它没有给出正确的结果,然后是 确实 的指数分布。

标签: random geometry


【解决方案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]

【讨论】:

    猜你喜欢
    • 2013-02-26
    • 1970-01-01
    • 1970-01-01
    • 2022-01-12
    • 2012-01-07
    • 1970-01-01
    • 2021-12-05
    • 1970-01-01
    • 2012-10-07
    相关资源
    最近更新 更多