Random stability question: how is the thread RNG used for running $urandom, $urandom_range, array.shuffle and randcase

In reply to dave_59:

I have a feeling that tool implementation might use multiple RNG values to finish a randomization operation like array.shuffle or std::randomize. So if the size of the array is different, the process randstate at obj = new; could be different.

So I just need to figure out some of details about these operation and put necessary randstate save/restore around them, just like what has been done in UVM BCL.