作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在研究一个模拟系统。我很快就会得到几个模拟输入值的真实世界分布的实验数据(直方图)。
当模拟运行时,我希望能够生成与测量分布相匹配的随机值。我更愿意在不存储原始直方图的情况下执行此操作。有哪些好的方法
编辑:输入数据是几种不同类型事件的事件持续时间。我希望不同的类型会有不同的分布函数。
最佳答案
至少两个选项:
来自现代物理学中的计算,作者: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 并用表格翻译。它很麻烦,但清晰、可行且完全通用。
归一化目标直方图,然后
x
)。同样,头脑简单但思路清晰且工作正常。对于概率非常低的分布(长尾峰),它可能会很慢。
使用这两种方法,如果不需要阶跃函数直方图,您可以使用分段多项式拟合或样条近似数据以生成平滑曲线——但留待以后使用这可能是过早的优化。
对于特殊情况可能存在更好的方法。
所有这些都是非常标准的,如果需要更多细节,应该出现在任何数值分析教科书中。
关于c - 如何生成与直方图匹配的点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/423006/
我是一名优秀的程序员,十分优秀!