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

Algorithm 存储概率分布而不保存单个值,algorithm,math,memory,probability,distribution,Algorithm,Math,Memory,Probability,Distribution,在一次操作中,我要计算许多(~1亿)浮点值。我不想将它们全部存储在内存中,但我想保存收藏的大致分布 我的想法是确定所有值的指数,并在直方图中计算它们。但是,当然,只有当这些值具有不同的指数时,这才有效 有人知道我如何在不知道分布情况的情况下做到这一点吗?我建议随机保存一些,然后在此基础上制作柱状图。例如,如果随机保存0.1%的数字,则只需保存100000,即可计算出高度准确的分布 您可以减少对rand()的调用次数,方法是每次保存一个数字时调用rand(),以查找范围为1..2000的随机数,然

在一次操作中,我要计算许多(~1亿)浮点值。我不想将它们全部存储在内存中,但我想保存收藏的大致分布

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


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

我建议随机保存一些,然后在此基础上制作柱状图。例如,如果随机保存0.1%的数字,则只需保存100000,即可计算出高度准确的分布


您可以减少对rand()的调用次数,方法是每次保存一个数字时调用rand(),以查找范围为
1..2000
的随机数,然后在保存下一个数字之前等待这么多的数字。

我建议随机保存一些数字,然后在此基础上制作柱状图。例如,如果随机保存0.1%的数字,则只需保存100000,即可计算出高度准确的分布


您可以减少对rand()的调用次数,方法是每次保存一个数字时调用rand()以查找范围
1..2000
中的随机数,然后在保存下一个数字之前等待这么多的数字。

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

计算出你需要多少垃圾箱 为了我所有的数字 找到这个号码放进的箱子
如果你大致知道最小值和最大值,我认为装箱策略是一个不错的选择。以下是我的意思的概要:

计算出你需要多少垃圾箱 为了我所有的数字 找到这个号码放进的箱子
另一个有用的替代方法是计算分布的动态矩,然后根据矩重构PDF


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


这取决于你愿意多粗暴。另外,你对价值的范围有什么想法吗?它们都在,比如说,0到100万之间吗?这取决于你愿意多粗糙。另外,你对价值的范围有什么想法吗?它们都在,比如说,0到100万之间吗?如果输入数据是足够随机/均匀分布的,你也可以对每个数据进行采样,这样就完全不需要随机数生成器了。@Tomboyo我想到了这一点,但我个人看到太多的“同步工件”想要这样做。我同意。“每n次”采样通常会得到不正确的结果。如果输入数据足够随机/均匀分布,那么也可以只对每n次数据进行采样,从而完全不需要使用随机数生成器。@Tomboyo我想到了这一点,但我个人看到的“同步工件”太多了我同意你的想法。我经常在“每N次”抽样中得到扭曲的结果。