While an algorithm makes the most sense with regard to the generation of cars within the UCD I'm still having trouble wrapping my head around how everyone who finds themselves in the same list (be it #1 or #2) finds everything identical (except the starting point).
At the risk of being an obnoxious know-it-all I'm going to try and explain with an example of one possible implementation. If you feel I'm being obnoxious please be kind when telling me.
We have 800 cars in the UCD. So we need to choose a range a bit larger than 800 that will allow us to make a given car appear more or less frequently. The larger we choose this number the more control we will have over the frequency of a given car. Let's go with a range of 10000. I'm just choosing it because it will make it simpler to understand. 10000/800 is about 12. A car that has an average number of appearances will have 12 numbers alloted to it. If we want a car to be rare we allot less than 12. If we want a car to appear more we allot more than twelve. Now, we have broken down our range of 10000 (0-9999) so every number will lead us to a car. Step 1 complete. (Side note: have you noticed that a Ford GT '02 is more frequent since the UCD was changed? They probably changed the frequency of this car because for many it did not appear in the first 2000 days or so. )
Next we need a pseudo random number generator. PD probably chose one for how good it is. I'm going to choose one for how simple it is. First, we want a seed that varies little. Let's choose something either PSN ID or Ethernet address, whatever it does not matter as long as it is always available and will not change on a given PS3. If the number is greater than 1000 we will just lop of any thing greater than 1000. So, for example we might get a number like, 435,329,726. In that case we will just take the 726 and make that our seed. Now, we are always going to add that 726 to the current in game day times 6(because we generate 6 cars every day). We will also have a number for the particular car within the day(0-5). Our seed will always be 726+6*(current day-1)+(car in day #). Next, we need a way to turn the seed into an apparently random number in our range of 10000. We are going to choose a prime number near our limit of 1000. I am arbitrarily choosing 9781. By the way, choosing say 9743 instead will result in a completely different list. This might be how they generate two different lists. For our random number generator we are just going to multiply the seed by the magic number 9781. So on day zero we get
9743*(726+6*0+0) = 9743*726 = 7,073,418.
We are just going to lop off any thing over 10000. So, our random number is 3,418. We take that number and look it up in our range of cars we made up earlier and that is the car that comes up in the UCD The rest of the cars for the day are
9743*(726+6*0+1) = 9743*727 = 7,083,161
9743*(726+6*0+2) = 9743*728 = 7,092,904
9743*(726+6*0+3) = 9743*729 = 7,102,647
9743*(726+6*0+4) = 9743*730 = 7,112,390
9743*(726+6*0+5) = 9743*731 = 7,122,133
Again lopping off anything after 10000 we get 3161 for our next car. The first car on the
15th day we will get
9743*(726+6*
15+0) = 9743*810 = 7,891,830.
Again lopping off any thing after 10000 we get 1830 which we look up in our range of cars.
There are certainly a few issues with this example and it is almost certainly not the actual implementation. However, I hope it helps you understand what is likely going on a bit better.