【发布时间】:2015-05-22 08:23:38
【问题描述】:
假设我有一个包含 200 万个 ID 的数组。我现在想检索这些 id 的样本。目前,我使用此问题答案here 中提出的随机抽样。
private static void shuffleScoreArray(ScoreDoc[] ar) {
Random rnd = new Random();
for (int i = ar.length - 1; i > 0; i--) {
int index = rnd.nextInt(i + 1);
// Simple swap
ScoreDoc a = ar[index];
ar[index] = ar[i];
ar[i] = a;
}
}
这很好用,但我现在如何检索非随机(或多或少分布良好 - 不必 100% 均等)采样?在这种情况下,非随机意味着如果我两次调用具有相同输入数组的函数,我将两次获得相同的结果样本。
我刚刚对 SO 和 Google 进行了大量研究,但在这种情况下找不到帮助我的方法。 SO 上的大多数方法似乎都处理随机抽样方法或增加性能步骤。
我可以想象(但不知道是否有效)是您总是使用相同的 Random 对象,但我不确定如何将其按预期的 java 代码工作。
非常感谢您与我分享的每一个想法和答案。
【问题讨论】:
标签: java arrays random shuffle sample