The 7800 doesn't have a real source of random numbers, same as pretty much every other system of the era. So 7800basic uses a 16-bit LFSR
as a source of pseudo random numbers. (normally 7800basic games use just the low byte of this LFSR, but the high byte is there to allow the larger range.)
Some info on working with LFSRs...
LFSRs actually travel over every number in their range before repeating (1 to 65535 in the case of a 16-bit LFSR) so every number is actually equally represented over the long haul.
The seed just determines the starting point for the LFSR sequence, but the overall sequence through the range is the same, regardless of where it started.
The INTIM seed in 7800basic (pointed out by Smitty) is my attempt to introduce a "true" random starting point for the sequence, but it's probably in vain as RIOT timers are likely identical from boot to boot. I've also seen floating bus locations used for seeding LFSRs, but in my experience they just reflect previous bus contents, rather than being random. Much better for the game code to just grab a random number for each frame while the title screen is displayed, and let the timing of when the player starts the game become the seed.
In the short haul, LFSR numbers may clump up a bit. This really isn't any different than true random numbers
, but it does run counter to what people generally expect from random numbers.
If you want your random numbers to be more fluffy, and less clumpy, you might look at throwing away values that are too close to recently drawn numbers.