设置种子以确定性方式在 Java 中随机排列 ArrayList
我有一个整数列表(目前使用cern.colt.list.IntArrayList)。我可以调用“shuffle()”并随机洗牌它们。我希望能够重现随机播放。我可以通过设置种子来重现一系列随机数。在这种情况下,我似乎无法设定种子。我该怎么办?我对其他实现持开放态度。
我有一个整数列表(目前使用cern.colt.list.IntArrayList)。我可以调用“shuffle()”并随机洗牌它们。我希望能够重现随机播放。我可以通过设置种子来重现一系列随机数。在这种情况下,我似乎无法设定种子。我该怎么办?我对其他实现持开放态度。
这可以通过使用允许您提供后备实例的 shuffle 方法来实现:Collections.shuffle(List<?> list, Random rnd)
:Random
例:
Collections.shuffle(yourList, new Random(somePredefinedSeed));
您可以使用公共静态 void shuffle(List list, Random rnd) 指定具有种子值的 Random 实例。对于随机(长种子)构造函数,您可以指定一个种子。
来自 Java Docs:
使用指定的随机性源随机置换指定的列表。假设随机性的来源是公平的,则所有排列都以相等的可能性发生。