Collections.shuffle() 真的足够随机吗?实际例子似乎否认了这一说法
我在一个中有1000个唯一对象,每个对象都引用一个图像,1000列表中的每个图像都是唯一的,现在我想洗牌它们,这样我就可以使用前20个对象并将它们呈现给网站用户。然后,用户可以单击一个显示“Shuffle”的按钮,然后我再次从头开始检索1000张图像并再次调用 。但是,似乎在1000个图像对象中,我经常在20个图像选择之间一次又一次地看到相同的图像。java.util.List
shuffle()
似乎有些地方不对劲,有什么更好的建议,建议吗?
我的代码非常简单:
List<String> imagePaths = get1000Images();
Collections.shuffle(imagePaths);
int i = 0;
for (String path: imagePaths) {
... do something with the path ...
i++;
if (i >= 20) break;
}
我知道这是很好的分布:例如,请参阅 http://blog.ryanrampersad.com/2012/03/03/more-on-shuffling-an-array-correctly/Collections.shuffle()
但是,我只是觉得在1000张图像中的20张图像中一遍又一遍地看到相同图像的可能性应该小得多......
非常感谢您的意见。