I have a computation/simulation system with one master server and (potentially) many clients (workers). All of them are working with the same data but need random numbers for the computation.
What would be the best PRNG and the best way to seed it to make sure that two clients aren’t using the same cycle and computing the same results twice.
The problem with seeding from something machine based (MAC address, name, IP address) is that the seed will always be the same on the same machine.
Usually seeds come from the current time. If all the worker machines start their process at the same time then they will all have the same seed.
Easiest way to deal with this is to combine the two values. Generating a seed from a machine hash and the current time will give you a unique seed per machine that changes after each run.
Another option to create a random number generator on the master, and have each worker get its seed from the master.