gpt4 book ai didi

c - 如何生成与直方图匹配的点?

转载 作者:太空狗 更新时间:2023-10-29 16:43:38 25 4
gpt4 key购买 nike

我正在研究一个模拟系统。我很快就会得到几个模拟输入值的真实世界分布的实验数据(直方图)。

当模拟运行时,我希望能够生成与测量分布相匹配的随机值。我更愿意在不存储原始直方图的情况下执行此操作。有哪些好的方法

  1. 将直方图映射到代表分布的一组参数?
  2. 在运行时根据这些参数生成值?

编辑:输入数据是几种不同类型事件的事件持续时间。我希望不同的类型会有不同的分布函数。

最佳答案

至少两个选项:

  1. 对直方图进行积分并进行数值反转。
  2. 拒绝

数值积分

来自现代物理学中的计算,作者:William R. Gibbs:

One can always numerically integrate [the function] and invert the [cdf] but this is often not very satisfactory especially if the pdf is changing rapidly.

您实际上建立了一个表,将范围 [0-1) 转换为目标分布中的适当范围。然后扔你通常的(高质量的)PRNG 并用表格翻译。它很麻烦,但清晰、可行且完全通用。

拒绝:

归一化目标直方图,然后

  1. 掷骰子在范围内随机选择一个位置 (x)。
  2. 再次抛出,如果新的随机数小于这个bin中的归一化直方图,则选择这个点。否则转到 (1)。

同样,头脑简单但思路清晰且工作正常。对于概率非常低的分布(长尾峰),它可能会很慢。


使用这两种方法,如果不需要阶跃函数直方图,您可以使用分段多项式拟合或样条近似数据以生成平滑曲线——但留待以后使用这可能是过早的优化。


对于特殊情况可能存在更好的方法。

所有这些都是非常标准的,如果需要更多细节,应该出现在任何数值分析教科书中。

关于c - 如何生成与直方图匹配的点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/423006/

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