in reply to How do I make a random shuffle deterministic?

Another possibility would be to keep, for each IP address, a shuffled list of numbers [1..n] if you see that you do not have one already for this IP.   Subsequent actual “shuffles” of the data would use the elements in this pre-shuffled list.   (Another way to say it is to capture the successive results from rand($i+1) as per the algorithm code-sample above, and re-use them.)   This has the possible advantage that it does not tamper with the (after all, global...) random-number seed value.   (Fiddling with the seed, of course, has a potential negative effect on other intended-to-be random sequences that your program might need to generate for other, unrelated purposes.   Capturing and re-using a sequence avoids this.   There might be another way to do it of which I am simply not aware.)