gpt4 book ai didi

math - 从n维单位单纯形均匀地随机采样

转载 作者:行者123 更新时间:2023-12-03 12:37:40 25 4
gpt4 key购买 nike

从n维单位单纯形均匀地随机抽样是一种怪异的方式,说您想要n个随机数,使得

  • 它们都是非负的
  • 它们合计为一,而
  • 具有n个非负数之和的每个可能 vector 之和等于1。

  • 在n = 2的情况下,您要从位于正象限的x + y = 1(即y = 1-x)线段中进行均匀采样。
    在n = 3的情况下,您将从平面x + y + z = 1的三​​角形部分中采样,该部分在R3的正八分圆中:

    (图片来自 http://en.wikipedia.org/wiki/Simplex。)

    请注意,选择n个统一的随机数,然后对其进行归一化,使其总和为1,是行不通的。您最终偏向较少的极端数字。

    类似地,选择n-1个均匀随机数,然后将nth取为1减去它们的总和,也会引入偏差。

    维基百科提供了两种算法来正确执行此操作: http://en.wikipedia.org/wiki/Simplex#Random_sampling
    (尽管第二个目前声称仅在实践中是正确的,但从理论上讲是不正确的。我希望对此有所了解或加以澄清。我起初是坚持“警告:某某纸质声明Wikipedia页面上出现以下错误”,其他人将其转为“仅在实践中有效”的警告。)

    最后,问题是:
    您认为Mathematica中最佳的单纯形采样实现方式是什么(最好是凭经验确认它是正确的)?

    相关问题
  • Generating a probability distribution
  • java random percentages
  • 最佳答案

    该代码可以工作:

    samples[n_] := Differences[Join[{0}, Sort[RandomReal[Range[0, 1], n - 1]], {1}]]

    基本上,您只需要在 n - 1间隔上选择 [0,1]位置即可将其拆分,然后使用 Differences来获取每个片段的大小。

    快速运行 Timing可以看出,它比Janus的第一个答案要快一些。

    关于math - 从n维单位单纯形均匀地随机采样,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3010837/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com