从列表中采样和删除随机元素

时间:2017-10-11 16:48:00

标签: java list random shuffle

我写了一个方法,随机抽样列表的一部分。代码如下:

private List<String> selectImages(List<String> images, Random rand, int num) {
    List<String> copy = new LinkedList<String>(images);
    Collections.shuffle(copy,rand);
    return copy.subList(0, num);
}

该方法将原始列表,随机数生成器和要采样的项目数作为输入。

现在我想从原始列表中删除所选元素(称为图像)。怎么办呢?

1 个答案:

答案 0 :(得分:3)

在旧列表中使用removeAll,并将参数作为子样本。

private List<String> selectImages(List<String> images, Random rand, int num) {
    List<String> copy = new LinkedList<String>(images);
    Collections.shuffle(copy,rand);
    List<String> sample = copy.subList(0, num);
    images.removeAll(sample);
    return sample;
}