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

时间:2016-07-07 17:27:17

标签: algorithm math memory probability distribution

我在操作期间计算了许多(~1亿)浮点值。我不想将它们全部存储在内存中,但我想保存集合的粗略分布。

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

有人知道如何在不知道发行方式的情况下如何做到这一点吗?

3 个答案:

答案 0 :(得分:5)

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

每次保存一个数字以查找1..2000范围内的随机数时,可以通过调用rand()减少调用次数,然后在保存下一个数字之前等待那么多个数字。

答案 1 :(得分:1)

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

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

答案 2 :(得分:0)

另一个有用的替代方案是计算分布的即时时刻,然后从瞬间重建PDF

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

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