我在操作期间计算了许多(~1亿)浮点值。我不想将它们全部存储在内存中,但我想保存集合的粗略分布。
我的想法是确定所有值的指数并在直方图中计算它们。但是,这当然只有在值具有不同的指数时才有效。
有人知道如何在不知道发行方式的情况下如何做到这一点吗?
答案 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