$20
In this project we will explore what is sometimes referred to as a random number generator. The linear congruential generator is a pseudorandom number generator that the reader may already be familiar with. This is the type of pseudorandom number generator that will have a definite pattern yet will appear to have no discernible pattern detectible without knowing the exact formula used. Random means no pattern while pseudorandom means no apparent pattern. The formula can be expressed as
𝑆𝑖+1 = (𝑀 ∗ 𝑆𝑖 + 𝐴)𝑚𝑜𝑑 𝑁
where 𝑀 is the multiplier, 𝐴 is the adder, 𝑁 is the norm. The first seed is 𝑆0 and each subsequent seed is determined from each iteration of the formula.
Do the following exercises below on paper by hand.
Exercise 1
Given the values below determine the pseudorandom number sequences for seed values of 0 and 4. Calculate a list of sixteen values.
𝑀 = 6, 𝐴 = 5, and 𝑁 = 11.
Exercise 2
For the generator 𝑆𝑖+1 = (6 ∗ 𝑆𝑖 + 3)𝑚𝑜𝑑 7 determine the pseudorandom number sequences for the following initial seed values, 0, 1, 4, and 5. Calculate a list of ten values.
There is a theorem that gives the requirements for the optimal values to be used in the generator.
Theorem (Statement without proof.)
The pseudorandom number generator will produce the maximum cycle length 𝑁 of pseudorandom numbers with any initial value of 𝑆 under either of these conditions:
For base ten (decimal numbers)
𝑁 is a power of 10, 𝐴 ends in (unit digit) 1, 3, 7, or 9, and 𝑀 − 1 is a multiple of 20.
For base two (binary numbers)
𝑁 is a power of 2, 𝐴 is odd, and 𝑀 − 1 is a multiple of 4.
The interested reader can use the values below and a seed of 0 to observe that the generator has a length of 16.
𝑁 = 16, 𝐴 = 7, 𝑀 = 21
Pseudorandom number generator for use in this project
Write a program in Python that generates 100 pseudorandom numbers in [0, 1). Format it to four decimal positions.
Use 𝑁 = 10000, 𝐴 = 4857, 𝑀 = 8601.
-------------------------------------------------------------------------------------------------------------------------------------------
Simulations using our pseudorandom number generator
Example 1: Flipping a Coin
Use the pseudorandom number generator to simulate a coin being flipped twenty five times.
Example 2: Rolling a Die
Use the pseudorandom number generator to simulate a die being rolled twenty five times.