rand():
...Kernel::srand may be used to ensure repeatable sequences of random numbers between different runs of the program....
srand():
Seeds the pseudorandom number generator to the value of number.to_i.abs. ... By setting the seed to a known value, scripts can be made deterministic during testing....
You can store your seed value, and the number of iterations that the user has made, then at a later time reseed with that value, then loop the number of times they've used it before to step over the previous values, and land on your next value in the sequence. It's the only way I know of to try to recover the sequence. If you are concerned about other routines/threads then grab the original seed and store it before you set srand with yours, get your next number, then restore the original seed.
If you are concerned about affecting the randomness about other routines that rely on it, I think the authors of those routines should have done something to ensure they were dealing with a truly random seed. You really can only concern yourself about your code and not killing the system. Beyond that the responsibility becomes theirs.