从列表中抽取和删除随机元素

Sampling and removing random elements from a list

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

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);
}

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

现在我想从原始列表(称为图像)中删除选定的元素。如何做到这一点?

在旧列表中使用 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;
}