设置种子以确定性地在Java中对ArrayList进行洗牌

时间:2011-06-08 20:07:04

标签: java random

我有一个整数列表(目前正在使用cern.colt.list.IntArrayList)。我可以称之为“shuffle()”并随意改组。我希望能够重现一场洗牌。我可以通过设置种子来重现一系列随机数。在这种情况下,我似乎无法设置种子。我该怎么办?我对其他实现持开放态度。

3 个答案:

答案 0 :(得分:41)

这可以通过使用shuffle方法来实现,该方法允许您提供后备Random实例:Collections.shuffle(List<?> list, Random rnd)

示例:

Collections.shuffle(yourList, new Random(somePredefinedSeed));

答案 1 :(得分:4)

您可以使用public static void shuffle(List list, Random rnd)使用种子值指定Random实例。对于Random(long seed)构造函数,您可以指定种子。

来自Java Docs:

  

随机置换指定列表   使用指定的源   随机性。所有排列都会发生   假设具有相同的可能性   随机性的来源是公平的。

答案 2 :(得分:3)