这是一个问题:我有随机整数说 count = M 并且它们需要在 N 个桶中平均分配(或大致相等)。
如果我要为 M 和 N 分配一个范围,N 将在 10000 左右,M 可能在 100 到 500 万之间。
到目前为止,这看起来像是一个小散列问题。但这使事情变得更加复杂。所以这些数字在计数上是 M,但它们将被逐步考虑,所以说最初你有 X 没有。整数,你平均分配它们,然后 Y 没有。整数可用更多,因此您再次分配它们,然后 Z 没有。整数个可用 (X+Y+Z = M)。
也是一个特定的号码。应该以这样的方式分布,即他们的桶没有。可以高效搜索。
到目前为止,我想到了几种方法,但没有一种方法可以接近平均分配。
1)有桶号。高,因此 N 的最大值为 500 万。平均分配意味着 500 个桶,所以从创建 500 个桶开始。它们最终将同样充满。但这也有可能很难处理的最终情况。2)根据当前可用的大小(X,然后是 X+Y,然后是 M)具有桶大小,如果它是完整的 rehash 以增加 no。桶。在我的用例中,这可能是一项代价高昂的练习,并且希望避免它。3)不知何故试图适应装箱问题。但它并不能轻易地告诉我整数将进入的 bin 是什么。要记住的一件明显的事情是,由于这些是随机数,如果计数是 100,000 则其中一个数。也可能是500,000。
你推荐什么方法?如果需要,我可以稍后提供用例。