假设我有一个包含2百万个ID的数组。我现在想要检索这些ID的样本。目前我使用的是这个问题中提出的随机抽样回答here。如何从java数组中抽取非随机样本
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上的大多数方法似乎都是处理随机抽样方法或者增加性能步骤。
我可以想象的(但不知道是否工作)是,你总是使用相同的随机对象,但我不确定如何把它作为预期的Java代码工作。
非常感谢您与我分享的每一个想法和答案。
这似乎工作,我会评估它现在更大的尺度:) – Waylander 2015-03-19 09:45:40