Seeding a random number generator selects where in it's sequence you would like to start- but the sequence itself is actually a formula which returns the sequence the same each time. Since it's a long, that gives us +- 2.1 billion positions, or a 4.2 billion number sequence (non repeating). That alone is a big number base, effectively more random than can be predicted.

I've always seeded random with a floating analog input.. that gives 1024 potential start points out of the roughly 4.2 billion number sequence- though I suppose the actual seeds float around 512 in a bell curve type thing, I don't think analogread on a port returns a flat profile for returned numbers- so the noise may be clustered around the center. If we throw a couple more reads at it, and shake it up, we'll get a wider number of potential start points, making it that much more random.

The seed is Long, -2,147,483,648 to 2,147,483,648 - which selects a start point in the sequence. How about:

long Seed;

Randomseed(analogRead(0));

j=random(100);

for (int i=1; i<j; i++) {

Seed=analogRead(0) * analogRead(1) + analogRead(2);

Randomseed(Seed);

}

Three analog reads, giving a total of 1024*1024*1024 (over a billion, a quarter of the entire sequence) potential start points in the random sequence... done a random number of times (1-100 that is). That's MUCH more random than can be predicted, effectively making it as close to totally random as one can get without getting funky with their own algorithms.. and even then, you are just making your sequence and substituting yours for the system's.

Random is random if the sequence cannot be predicted from the outside.