Random Number Generation

Please do the following.
  1. Write a Linear Congruential Generator of Random Numbers. Your choice: mixed mode or multiplicative. Strive for full period (m for mixed mode, m/4 for multiplicative). m should be no larger than 26 for mixed (28 for multiplicative). (See Ch 7 in Banks.)
    1. Show whether or not your RNG is "full period" or not.
    2. If it isn't full period, is there some particular seed that has a pretty long period? If so, use it for testing
  2. Empirically test your RNG for uniformity and independence. For both, use 0.05 for level of significance.
    1. Use chi-square test for uniformity. Make n>=100. If n=100 then at most n/k >=5 (so k=20 "bins").
    2. Use "runs" test for independence (autocorrelation).
    3. Plot a "scatter diagram" for (qualitative) independence.
  3. Perform the above empirical tests on a RNG provided by "some" programming language or tool (C, C++, Java, Perl, spreadsheet, etc) or published algorithm (Numerical Recipes, etc.) - your choice. Everyone need to pick a different RNG!
    1. How "good" is the programming language RNG?

Write this up as a report and put a link to it on your course web page.

Your report should also be something that will impress a significant number of people on the planet. PS - It should also be alot of fun to do!

Email me the link when it's complete.