Ben Flynn
Ben Flynn

Reputation: 18922

Setting a seed to shuffle ArrayList in Java deterministically

I have a list of integers (currently using cern.colt.list.IntArrayList). I can call "shuffle()" and randomly shuffle them. I would like to be able to reproduce a shuffle. I can reproduce a series of random numbers by setting a seed. I do not seem to be able to set a seed in this case. What should I do? I am open to other implementations.

Upvotes: 32

Views: 20176

Answers (3)

aioobe
aioobe

Reputation: 421100

This is possible by using the shuffle method that allows you to provide the backing Random instance: Collections.shuffle(List<?> list, Random rnd):

Example:

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

Upvotes: 65

CoolBeans
CoolBeans

Reputation: 20800

You can specify the Random instance with a seed value using public static void shuffle(List list, Random rnd). For the Random(long seed) constructor you can specify a seed.

From Java Docs:

Randomly permute the specified list using the specified source of randomness. All permutations occur with equal likelihood assuming that the source of randomness is fair.

Upvotes: 6

Related Questions