How do I seed the random number generator myself and still get pseudorandom values?

How do I change the Random.seed myself relative to other variables to still get pseudorandom output?

Consider the following C# code:

   float RandomFromXAndY(int x, int y) {
        Random.seed = x * y; //Repeating, not pseudorandom.
        return Random.value;
    }

The problem is there are multiple combinations of x and y that can yield their same product (e.g., 3 * 6 or 6 * 3 both equal 18). So the result may yield the same, even when different combinations of x and y values are used. When generating x and y linearly, it becomes possible to mathematically predict the repetition.

How do I generate a random seed that is more “random”, or pseudorandom from x and y?

You add them together and multiply both by different prime numbers.

You just need to be careful about trusting the random to be the same. If some other system calls random in the middle of this function, the same seed won’t produce the same set of numbers since Random is global.

In reality, this system should be refactored so you make your own stream object, then you can control who is called it and insure that the stream of random number is always the same.