设置种子以确定性地在Java中对ArrayList进行洗牌
我有一个整数列表(目前使用cern.colt.list.IntArrayList )。 我可以打电话给“shuffle()”然后随意洗牌。 我希望能够重现一场洗牌。 我可以通过设置种子来重现一系列随机数。 在这种情况下,我似乎无法设置种子。 我该怎么办? 我对其他实现持开放态度。
这可以通过使用shuffle方法来实现,该方法允许您提供后台Random
实例: Collections.shuffle(List> list, Random rnd)
:
例:
Collections.shuffle(yourList, new Random(somePredefinedSeed));
您可以使用public static void shuffle(List list,Random rnd)使用种子值指定Random实例。 对于Random(长种子)构造函数,您可以指定种子。
来自Java Docs:
使用指定的随机源随机置换指定的列表。 假设随机源是公平的,所有排列都以相同的可能性发生。
有一种替代方法,它将Random作为源