Is Random.Range really uniform?

I have a script randomly generating instances of different game objects. It uses Random.Range to decide which one to instantiate, but I’m not entirely convinced that it’s returning a uniform distribution. I’ve been trying it with just two objects and have it count how many of each it spawns, and it seems to favor one object over the other. I just let it run, generating one random object per frame for several minutes, and the gap between the two numbers is now past 100 and steadily climbing (not quickly, but steadily). Every time I run it, I set the seed to be (int)Time.time, but it always creates more of the first object than the second one, no matter how many times I run it. Is there some trick to getting the distribution to be more uniform?
Thanks a lot!

There’s no reason to set the seed, unless you specifically want a repeatable sequence. Unity uses Marsaglia’s Xorshift 128 algorithm, which is high quality. This code demonstrates that there is no particular bias:

var x = 0;
var y = 0;
for (var i = 0; i < 1000000; i++) {
    if (Random.Range(0, 2)) {
    else {
Debug.Log (x + " " + y);

If you run it a number of times, you’ll find that x is greater than y approximately half the time, and both x and y always end up being fairly close to 500,000.