Deja-Vu ...
All Over Again?
Or How the 2104 Draft Tore a Hole in
the Space-Time Continuum
by John Zabroski
On
Friday night, shortly after the 2103
regular season was completed, I
downloaded the 2104 Rookie Draft file
and started making my list. I chuckled
when I saw Denny Barkovic was the best
offensive lineman in the draft.
Immediately, I saw Barkovic as a
sentimental pick for me, since he played
for the Washington Redskins when I was
AGM. As soon as I dismissed taking
Barkovic #1 overall, Pat messaged me
asking who I planned to take #1
overall. I said, "Calvin Jobson." At
that point, Pat notified me of a big
problem with the 2104 Draft. As Pat
said to me, "You weren't very original
taking Jobson #1 overall." Here is my
explanation of what Pat discovered and
how it happened.
The 2104 Draft is almost a perfect
repeat of the 2085 Draft. How did this
happen? Did the FPSFBPro98 sim tear a
hole in the fabric of space and disrupt
the space-time continuum? Has USAFL
been running so long that the league has
uncovered a modern Physics wonder? No.
In 2085, Calvin Jobson was taken #1
overall. What may seem like deja-vu is
actually the result of pseudo-random
number generation. Since a computer is
a deterministic machine, it can only
produce quasi-random numbers. There are
several methods for generating these
quasi-random numbers, and these
algorithms can be read in Numerical
Recipes in C or The Art of Computer
Programming, Vol. 2, Semi numerical
Algorithms. However, the
pseudo-randomness is not "pure-random".
Pure random would be counting the time
between clicks of a Geiger counter while
holding it over cesium atoms, like the
kind used in cesium atomic clocks. Most
house-hold computers don't come with USB
Geiger counters and a warranted supply
of cesium atoms, so FPSFBPro 98 uses
pseudo-random number generation instead.
Why is pseudo-random number generation
the culprit here? Well, first, it might
help to understand what a pseudo-random
number generator is. In layman's terms,
most pseudo-random number generators are
just really big roulette wheels. If you
knew how fast a roulette wheel was going
to spin, then you could predict using
physics equations when the momentum of
the wheel would equal zero (when the
wheel stops). (In fact, Thomas Bass
tells the story of physicists playing
roulette in The Eudaemonic Pie.) When
you are at the roulette wheel, what you
see feels like randomness. You are
gambling and under the impression your
luck is out of your control. However,
it only works if the roulette dealer
releases the ball the same way each time
and spins the wheel at predictable
speeds. Knowing these two factors is
parallel to what we call a knowing the
"seed" in pseudo-random number
generation. If you know the seed the
quasi-random sequence was generated
with, then you could deterministically
reproduce that same quasi-random
sequence. Suddenly, the difference
between quasi-random and pure-random
becomes apparent. Quasi-random is
reproducible, pure-random is not.
In scientific research, quality
pseudo-random number generators are
still useful, because reproducibility
*is* important. Most of us depend upon
these pseudo-random number generators to
shop online, and only especially
high-quality pseudo-random number
generators are used:
cryptographically-strong pseudo-random
number generators. This leads into an
important point: Not all pseudo-random
number generators are created equal.
Some generate random numbers really
fast, at the expense of linear
correlations (poor quality of
randomness). Most video games use these
"cheap" pseudo-random number generators,
because in video games performance
matters. On the other hand, when you
are doing credit card transactions
online, quality of randomness outweighs
performance because that extra quality
means extra security. However, linear
correlations are not the problem here.
We can live with poor quality, because
it is just a game.
In addition to being cheap and having
high linear correlations, in most of the
old algorithms for generating
quasi-random numbers the seed can only
be one of a several thousand values.
For video games, this is generally more
than enough. However, for the USAFL,
this was not! The designers of
FPSFBPro98 probably never expected
anyone to sim over 100 seasons,
especially given that there can be only
2^(15)-1 PIDs before a new league file
must be used. Most likely, there was
2^16 possible seed values (65536).
Although there may have been 2^32
possible seed values (4294967296).
Mathematically, the probability that two
seeds will be identical is given using
an approximation of the Birthday
Paradox:
p(n) ~~= 1 - ((2^(32)-1)/(2^(32))^C(N,2)
where N is the number of drafts we have
had so far (104). Crunching some
numbers results in:
p(n) ~~= 1 -
(4294967295/4294967296)^(5356) ~~= 1 -
0.999998753 ~~= 1.24704016e-06
OR
p(n) ~~= 1 - ((2^(16)-1)/(2^(16))^C(N,2)
p(n) ~~= 1 - (65535/65536)^(5256) ~~=
0.0770690034
As you can see, there is almost an 8
percent chance in the second
calculation, which assumes the seed is a
16-bit integer. My guess is that the
seed is a 16-bit integer, since
FPSFBPRo98 is a DOS-based game.
So, the reason the 2104 Draft is almost
an exact replica of the 2085 draft is
because the seed was exactly the same.
Every quasi-random number generated on
that fateful night in 2085, was
generated again tonight, likely
including potentials. This means the
smartest drafting strategy for 2104
would be to look back at who the best
players were and take them. There are
tiny differences in the draft, owing to
the fact that the number of players
randomly generated at each position is
determined by the number of players who
retired at each position in the most
recent season. So, for instance, Nesby
Catherwood was a QB in 2085, but a HB in
2104:
QB Nesby Catherwood 13036
6-2 212 57 40 80 67 49 51 76 81
HB Nesby Catherwood 22651
6-2 192 83 71 60 62 47 56 76 36
This befuddled me, until Pat pointed out
to me that Nesby Catherwood was the last
QB PID in 2085, but the first HB PID in
2104. This points to the fact that the
number of players generated at each
position is dependent on the number of
retirements at each position the
previous year.
The logic behind the differences in
Catherwood's ratings is related to this
phenomena as well. While I do not have
the FPSFBPro 98 source code, I can
roughly guess how the player generator
works. I've written such code for other
commercial simulation games:
RanPlayGen.exe, a third-party
application for FHLSim. When I wrote
it, each position had a range of
different player types generated. Since
it was a hockey sim, I had playmakers,
grinders, goalscorers, goons, etc.
There you have it. USAFL didn't tear a
hole in the space-time continuum, but it
is yet another first in USAFL history.
Editor's Note:
The league created a new batch of
rookies/retirements to avoid
having the 2085 Clones enter the
USAFL history. Many thanks to Pat
Sicher for discovering the
duplicating rookies and to John
Zabroski for his assistance in
troubleshooting the errors. Once
again the USAFL has boldly gone
where no other FBPRO leagues have
gone before. We are forwarding our
findings to Lorne Sundby - we'll
publish his comments here once we
hear back from him. |
|