从 Python 中的单纯形中随机均匀采样
Posted
技术标签:
【中文标题】从 Python 中的单纯形中随机均匀采样【英文标题】:Sample uniformly at random from a simplex in Python 【发布时间】:2021-03-17 03:49:40 【问题描述】:我想从 python 中的单纯形中统一采样。我在 R 中找到了以下内容,但在 python 中目前还没有找到
runif_in_simplex(n, simplex)
编辑:以下解决方案是否正确?
-
生成 N 个随机数(N = 单纯形的顶点数)
将这 N 个数归一化(除以总和)
形成 N 个数和 Vertice 坐标的线性组合。
【问题讨论】:
这能回答你的问题吗? Generating N uniform random numbers that sum to MIs the following solution correct?
假设您的随机数在 [0...1) 范围内浮动,则您的解决方案不正确
【参考方案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。
【讨论】:
以上是关于从 Python 中的单纯形中随机均匀采样的主要内容,如果未能解决你的问题,请参考以下文章
SciPy Delaunay三角剖分改变了单纯形的多个点,以实现参数的微小变化