我正在寻找可用于从整数流中生成批次的哈希函数。具体来说,我想将整数xi
从一个集合或流(比如X
)映射到另一组整数或字符串(比如Y
),以便将许多xi
映射到一个yj
。在这样做的同时,我想确保有 at maxn
xi
映射到单个yj
. 与散列一样,我需要能够可靠地找到y
给定的x
.
我想确保大多数映射到它们的数量yj
接近(以避免从to非常稀疏的映射)。n
xi
X
Y
我能想到的一个函数是商:
int BATCH_SIZE = 3;
public int map(int x) {
return x / BATCH_SIZE;
}
对于连续整数流,它可以很好地工作。例如流 1..9 将被映射到
1 -> 0
2 -> 0
3 -> 1
4 -> 1
5 -> 1
6 -> 2
7 -> 2
8 -> 2
9 -> 3
等等。但是,对于非连续的大整数和小批量(我的用例),这可以生成超稀疏映射(每个批次大部分时间只有 1 个元素)。
是否有任何标准方法来生成这样的映射(批处理)