How to run multiple threads, all using the same sequence of pseudorandom numbers, in Julia?

I’m familiar with genetic algorithms, but this is where I don’t follow. Is this some sort of pre-training? Why does this pretraining not work when the stream of numbers is changing? Do you have (at least some) control over the code you’re actually running evolution on?

You will have to reset them for each invocation of your job(), yes. This will be made easier by passing in RNGs explicitly (conceptually the same as the vector of RNGs proposed by @L_Adam, but it’s again better to be explicit about passing them around).

If the code you’re running is oblivious to RNGs being passed in, I’m afraid you’re out of luck trying to control them (as mentioned above, if they spawn their own tasks they will have their own RNG in them in 1.7. You won’t have access to that, even if you seed your own task local RNG).