如何从java数组中获取非随机样本
假设我有一个包含200万ID的数组。现在我想检索这些ID的一个示例。目前,我使用了一个随机抽样,正如在这个问题的答案中提出的那样 这非常有效,但我现在如何检索一个非随机(或多或少是好的分布-不必100%相等)采样?在这种情况下,非随机意味着如果我使用相同的输入数组调用函数两次,那么两次都会得到相同的结果样本 我只是在SO和Google上做了很多研究,但在这个案例中找不到一种方法来帮助我。SO上的大多数方法似乎都处理随机抽样方法或增加性能步骤 我可以想象(但不知道是否有效)您总是使用相同的随机对象,但我不确定如何将其作为预期的java代码使用如何从java数组中获取非随机样本,java,arrays,random,shuffle,sample,Java,Arrays,Random,Shuffle,Sample,假设我有一个包含200万ID的数组。现在我想检索这些ID的一个示例。目前,我使用了一个随机抽样,正如在这个问题的答案中提出的那样 这非常有效,但我现在如何检索一个非随机(或多或少是好的分布-不必100%相等)采样?在这种情况下,非随机意味着如果我使用相同的输入数组调用函数两次,那么两次都会得到相同的结果样本 我只是在SO和Google上做了很多研究,但在这个案例中找不到一种方法来帮助我。SO上的大多数方法似乎都处理随机抽样方法或增加性能步骤 我可以想象(但不知道是否有效)您总是使用相同的随机对象
非常感谢你和我分享的每一个想法和答案 将种子传递给RNG。与此相反:
Random rnd = new Random();
:
对于相同的种子值,来自RNG的值将是相同的。因为如果输入相同的数组,您希望反复接收相同的结果;为什么不从数组中获取每N条记录?通过将数组除以所需的样本大小,可以轻松地计算n
但是,除非首先对数组进行排序,否则上述方法无法保证正确的分布。这似乎可行,我现在将对其进行评估,以获得更大的规模:)
Random rnd = new Random();
Random rnd = new Random(12345l);