我正在研究一个模拟系统。我很快将获得几个模拟输入的真实值分布的实验数据(直方图)。
当模拟运行时,我希望能够产生与测量分布相匹配的随机值。我更愿意不存储原始直方图。有哪些好的方法
编辑:输入数据是几种不同类型事件的事件持续时间。我希望不同的类型具有不同的分发功能。
至少两个选择:
摘自William R.Gibbs的《现代物理学计算》
人们总是可以对[函数]进行数值积分,然后将[ cdf ] 求反,但这通常不是很令人满意,特别是在 pdf 迅速变化的情况下。
您实际上将建立一个表,将该表转换[0-1)为目标分布中的适当范围。然后抛出您惯用的(高质量)PRNG,并与表格一起翻译。它很麻烦,但清晰,可行且完全通用。
[0-1)
归一化目标直方图,然后
x
再次,头脑简单,但清晰而有效。分布速度很慢,概率很低(峰尾较长)。
使用这两种方法时,如果不需要阶跃函数直方图,则 可以 使用分段多项式拟合或样条曲线近似数据以生成平滑曲线-但留待以后使用,因为这可能是过早的优化。
对于特殊情况,可能存在更好的方法。
所有这些都是非常标准的,如果需要更多详细信息,则应出现在任何《数值分析》教科书中。