Follow-up to my previous post...
As far as I can tell, the random (and rand) implementation in avr-libc follows the description provided by Park/Miller. I coded both the "less than 32 bit processor" and "32 bit processor" versions in Pascal. I also built an Excel workbook from the equations. Values from all three match.
rand is simply the lower 15 bits of random. My suggestion for using rand to solve this problem may be a bad idea.
The Arduino code deviates from the Park/Miller algorithm. In the original algorithm, the most-significant bits remain most-significant in the final result. The opposite is true for the Arduino random function; the least-significant bits become the final result.
From my analysis, I'd have to strongly agree with Marsaglia in his reply to Park/Miller, "The congruential generator x, = 16807xn_1mod 2:31 - 1 is a good generator, but not a great generator".