当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《如何生成与直方图匹配的点?》经验,为你挑选了1个好方法。

我正在研究一个模拟系统.我将很快获得实验数据(直方图),用于几个模拟输入的实际值分布.

当模拟运行时,我希望能够生成与测量分布匹配的随机值.我宁愿这样做而不存储原始直方图.有什么好方法

    将直方图映射到表示分布的一组参数?

    在运行时生成基于这些参数的值?

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



1> dmckee..:

至少有两种选择:

    整合直方图并以数字方式反转.

    拒绝

数字整合

来自William R. Gibbs的现代物理计算:

人们可以总是数字地整合[函数]并反转[ cdf ],但这通常不是很令人满意,特别是如果pdf正在快速变化.

您实际上构建了一个表,将范围[0-1)转换为目标分布中的适当范围.扔掉你平常的(高质量的)PRNG并用桌子翻译.它很麻烦,但清晰,可行,而且完全一般.

拒绝:

然后标准化目标直方图

    扔骰子x随机选择沿范围的位置().

    再次抛出,如果新的随机数小于此箱中的标准化直方图,则选择此点.否则转到(1).

再次,简单明了但清晰而有效.它的分布速度很慢,概率非常低(长尾峰).


使用这两种方法,如果不需要阶梯函数直方图,您可以使用分段多项式拟合或样条来近似数据,以生成平滑曲线 - 但请稍后将其保留,因为它可能是过早优化.


特殊情况可能存在更好的方法.

所有这些都是非常标准的,如果我需要更多详细信息,它应该出现在任何数字分析教科书中.

推荐阅读
sx-March23
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有