存储概率分布而不保存单个值

Storing a probability distribution without saving single values

我在一次运算中计算了很多(约 1 亿个)浮点值。我不想将它们全部存储在内存中,但我想保存集合的粗略分布。

我的想法是确定所有值的指数并将它们计算在直方图中。但是,当然,这仅在值具有不同指数时才有效。

有人知道我如何在不知道分布情况的情况下做到这一点吗?

我建议随机保存一些,然后在事后制作直方图。例如,如果你随机保存 0.1% 的数字,那么你只需要保存 100,000,从中你可以计算出一个高度准确的分布。

您可以减少调用 rand() 的次数,方法是每次保存一个数字时调用它以找到 1..2000 范围内的随机数,然后等待那么多数字再保存下一个。

如果您大致知道最小值和最大值,我认为分箱策略将是一个不错的选择。这是我的意思的概述:

算出你需要多少个垃圾桶 对于我所有的号码 找到这个号码所在的垃圾箱 增加 bin

另一个有用的替代方法是计算分布的动态矩,然后从矩重建 PDF

https://en.wikipedia.org/wiki/Method_of_moments_(statistics)

https://www.wias-berlin.de/people/john/ELECTRONIC_PAPERS/JAOT07.CES.pdf