【问题标题】:Sample uniformly at random from a simplex in Python从 Python 中的单纯形中随机均匀采样
【发布时间】:2021-03-17 03:49:40
【问题描述】:

我想从 python 中的单纯形中统一采样。我在 R 中找到了以下内容,但在 python 中目前还没有找到

 runif_in_simplex(n, simplex)

编辑:以下解决方案是否正确?

  1. 生成 N 个随机数(N = 单纯形的顶点数)
  2. 将这 N 个数归一化(除以总和)
  3. 形成 N 个数和 Vertice 坐标的线性组合。

【问题讨论】:

标签: python random simplex


【解决方案1】:

单位指数变量是你需要的(相关post)。

def runif_in_simplex(n):
  ''' Return uniformly random vector in the n-simplex '''

  k = np.random.exponential(scale=1.0, size=n)
  return k / sum(k)

您提出的过程在单纯形中不是均匀分布的。

参考

Onn, S. 和 Weissman, I.(2011 年)。在单纯形上生成均匀的随机向量,对某个多面体的体积和多元极值有影响。运筹学年鉴,189(1),331-342。

【讨论】:

    猜你喜欢
    • 2011-03-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-26
    • 2011-07-21
    • 2018-03-31
    • 2014-06-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多