You are on page 1of 39

GENERATING RANDOM NUMBERS AND RANDOM VARIABLES

Presented By: Dionisio, Adrian Delos Reyes, Ma. Victorina Dizon, Xaraenielle Santos, Jeamaica

GENERATING RANDOM NUMBERS

WHAT ARE RANDOM NUMBERS


Random numbers are a necessary basic ingredient in the simulation of almost all discrete systems. Most computer languages have a subroutine, object, or function that will generate a random number. Similarly simulation languages generate random numbers that are used to generate event limes and other random variables. It is impossible to produce an arbitrarily long string of random digits and prove it is random. Strangely, it is also very difficult for humans to produce a string of random digits, and computer programs can be written which, on average, actually predict some of the digits humans will write down based on previous ones.

Intuitively, we can list a number of criteria that a sequence of numbers must fulfill to pass as a random number sequence: unpredictability, independence, without pattern. These criteria appear to be the minimum request for an algorithm to produce random numbers. More precisely we can formulate: uniform distribution, uncorrelated, passes every test of randomness, large period before the sequence repeats , sequence repeatable and possibility to vary starting values, fast algorithm.

PROPERTIES OF RANDOM NUMBERS


 Two

important statistical properties: Uniformity Independence

y y

PSEUDORANDOM NUMBERS
Pseudo means false, so false random numbers are being generated. The goal of any generation scheme is to produce a sequence of numbers between zero(0) and one(1) which simulates, or initiates, the ideal properties of uniform distribution and independence as closely as possible. When generating pseudo-random numbers, certain problems or errors can occur. These errors, or departures from ideal randomness, are all related to the properties stated previously. Some examples include the following:

1.

The generated numbers may not be uniformly distributed. 2. The generated numbers may be discrete - valued instead continuous valued. 3. The mean of the generated numbers may be too high or too low. 4. The variance of the generated numbers may be too high or low 5. There may be dependence. The following are examples: (a) Autocorrelation between numbers. (b) Numbers successively higher or lower than adjacent numbers. (c) Several numbers above the mean followed by several numbers below the mean.

Usually, random numbers are generated by a digital computer as part of the simulation. Numerous methods can be used to generate the values. In selecting among these methods, or routines, there are a number of important considerations. Fast Portable to different computers Have sufficiently long cycle Replicable Closely approximate the ideal statistical properties of uniformity and independences.

TECHNIQUES FOR GENERATING RANDOM NUMBERS

Linear Congruential Method (LCM) Linear Congruential Generators

 Combined

(CLCG)
 Random

Number Streams

LINEAR CONGRUENTIAL METHOD (LCM)


The linear congruential method, initially proposed by Lehmer [1951], produces a sequence of integers, X1, X2,... between zero and m 1 according to the following recursive relationship: Xi+1 = (a Xi + c) mod m,
multiplier increment

i = 0,1, 2,...
modulus

The initial value X0 is called the seed, a is called the constant multiplier, c is the increment, and m is the modulus. The selection of the values for a, c, m, and X0 drastically affects the statistical properties and the cycle length.

If c 0, the form is called the mixed congruential method. When c = 0, the multiplicative form is known as the congruential method. The selection of the values for a, c, m and X0 drastically affects the statistical properties and the cycle length. The random integers are being generated [0, m-1], and to convert the integers to random numbers: X Ri = ---- , m

i = 1,2,3

Example: Use the linear congruential method to generate a sequence of random numbers with X0 = 27, a = 17, c = 43, and m = 100. Here, the integer values generated will all be between zero and 99 because of the value of the modulus. These random integers should appear to be uniformly distributed the integers zero to 99. Random numbers between zero and 1 can be generated by: Ri = Xi / m, i=1,2,3.

The sequence of Xi and subsequent Ri values is computed as follows: X0 = 27 X1 = (17 27 + 43) mod 100 = 502 mod 100 = 2 R1 = 2 100 = 0.02 X2 = (17 2 + 43) mod 100 = 77 mod 100 = 77 R2 = 77 100 = 0.77 X3 = (1777+ 43) mod 100 = 1352 mod 100 = 52 R3 = 52 100 = 0.52 X4 = (17 52 + 43) mod 100 = 927 mod 100 = 27 R4 = 27 100 = 0.27

Example 2:
Find the sequence of random numbers given a = 13, c = 0, m = 31, X0 = 1. X0 = 1 X1 = (13 * 1 + 0) mod 31 = 13 mod 31 = 13 X2 = (13 * 13 + 0) mod 31 = 169 mod 31 = 14 X3 = (13 * 14 + 0) mod 31 = 182 mod 31 = 27 X4 = (13 * 27 + 0) mod 31 = 351 mod 31 = 10 X5 = (13 * 10 + 0) mod 31 = 130 mod 31 = 6 X6 = (13 * 6 + 0) mod 31 = 78 mod 31 = 16 X7 = (13 * 16 + 0) mod 31 = 208 mod 31 = 22 X8 = (13 * 22 + 0) mod 31 = 286 mod 31 = 7 X9 = (13 * 7 + 0) mod 31 = 91 mod 31 = 29 X10 = (13 * 29 + 0) mod 31 = 377 mod 31 = 5 X11 = (13 * 5 + 0) mod 31 = 65 mod 31 = 3

The sequence begins with: 1, 13, 14, 27, 10, 6, 16, 22, 7, 29, 5, 3, What's the next value? Well, it looks pretty unpredictable, but you've been initiated. So you can compute. The first 30 terms in the sequence are a permutation of the integers from 1 to 30 and then the sequence repeats itself. It has a period equal to m - 1.

If a pseudorandom integer sequence with values between 0 and m is scaled by dividing by m, the result is floating-point numbers uniformly distributed in the interval [0, 1]. Our simple example begins with: 0.0323, 0.4194, 0.4516, 0.8710, 0.3226, 0.1935, 0.5161, . There are only a finite number of values, 30 in this case. The smallest value is 1 / 31 and the largest is 30/ 31.

Seatwork: Use the linear congruential method to generate a sequence of random numbers with X0 = 9, a = 5, c = 11, and m = 16. Find the list of random numbers that will be generated by the given values before an occurrence of any random number in the list will occur. Show your solution.

TESTING RANDOM NUMBER RANDOMNESS The desirable properties of random numbers are uniformity and independence. To insure that these desirable properties are achieved, a number of tests can be performed. The first entry in the list below concerns testing for uniformity. The second through fifth entries concern testing for independence. The five types of tests are: 1. 2. 3. 4. 5. Frequency Test Runs Test Autocorrelation Test Gap Test Poker Test

When to Use These Tests: If a well-known simulation languages or random-number generators is used, it is probably unnecessary to test If the generator is not explicitly known or documented, e.g., spreadsheet programs, symbolic/numerical calculators, tests should be applied to many sample numbers.

In testing for uniformity, hypotheses are as follows: H0: Ri ~ U[0,1] H1: Ri ~ U[0,1]

the

The null hypothesis, H0 reads that the numbers are distributed uniformly on the interval [0, 1]. Failure to reject the null hypothesis means that no evidence of nonuniformity has been detected on the basis of this test. This does not imply that further testing of the generator for uniformity is unnecessary.

In testing for independence, hypotheses are as follows: H0: Ri ~ independently H1: Ri ~ independently

the

The null hypothesis, H0 reads that the numbers are independent. Failure to reject the null hypothesis means that no evidence of dependence has been detected on the basis of this test. This does not imply that further testing of the generator for independence is unnecessary.

For each test, a level of significance must be stated. The level is the probability of rejecting the null hypothesis given that the null hypothesis is true, or = P (reject H0|H0 true) The decision maker sets the value of for any test. Frequently, is set to 0.01 or 0.05.

If several tests are conducted on the same set of numbers, the probability of rejecting the null hypothesis on at least one test, by chance alone [i.e., making a Type I (a) error], increases. Say that = 0.05 and those five different tests are conducted on a sequence of numbers. The probability of rejecting the null hypothesis on at least one test, by chance alone, may be as large as 0.25.

FREQUENCY TEST

A basic test that should always be performed to validate a new generator is the test of uniformity. Two different methods of testing are available. They are the Kolmogorov-Smirnov and the chisquare test. Both of these tests measure the degree of agreement between the distribution of a sample of generated random numbers and the theoretical uniform distribution. Both tests are based on the null hypothesis of no significant difference between the sample distribution and the theoretical distribution.

KOLMOGOROV-SMIRNOV TEST

This test compares the continuous cdf, F(x), of the uniform distribution with the empirical cdf, SN(x), of the N sample observations. By definition: F(x) = x, 0 x 1

If the sample from the RN generator is R1, R2, , RN, then the empirical cdf, SN(x) is:

As N becomes larger, SN(x) should become a better approximation to F(x), provided that the null hypothesis is true.

The Kolmogorov-Smirnov test is based on the largest absolute deviation between F(x) and SN(x) over the range of the random variable. That is, it is based on the statistic: D = max| F(x) - SN(x)| that is the absolute value of the differences.

Here D is a random variable. If the calculated value is greater than the ones listed in the table, the hypothesis (no disagreement between the samples and the theoretical value) should be rejected; otherwise, we don't have enough information to reject it.

Following steps are taken to perform this test: 1. Rank the data from smallest to largest R(1)R(2)... R(N) 2. Compute

3. Compute D = max(D+, D-) 4. Get D for the significance level 5. If D D accept, otherwise reject H0

Example: Suppose 5 generated numbers are 0.44, 0.81, 0.14, 0.05, 0.93. Step 1: Arrange R(i) from smallest to largest.
R(i) i/ N 0.05 0.20 0.14 0.40 0.44 0.60 0.81 0.80 0.93 1.00

Step 2: Compute D+ and D-.


D+ = max{i/N R(i)} i/ N 0.15 0.05 0.26 0.16 0.04 0.21 0.07 0.13

D+ = 0.26 D- = 0.21

Step 3: D = max(D+, D-). D = 0.26 Step 4: Get D for the significance level . For = 0.05, D = 0.565 > D Step 5: H0 is not rejected.

CHI-SQUARE TEST

The chi-square test looks at the issue from the same angle but uses different method. Instead of measure the difference of each point between the samples and the true distribution, chi-square checks the ``deviation'' from the ``expected'' value.

where n is the number of classes (e.g. intervals), Oi is the number of samples observed in the interval or the observed # in the i-th class, Ei is expected number of samples in the interval or expected # in the i-th class.

For the uniform distribution, Ei, the expected number in each class is:

where N is observation.

the

total

of

This test is valid only on large samples, e.g. N>=50.

Example: 100 numbers from [0,1] = 0.05 10 intervals X20.05,9 = 16.9

Interval Upper Limit


1 2 3 4 5 6 7 8 9 10 S 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0

Oi
10 9 5 6 16 13 10 7 10 14

Ei
10 10 10 10 10 10 10 10 10 10

Oi Ei
0 -1 -5 -4 6 3 0 -3 0 4 0

(Oi Ei)2
0 1 25 16 36 9 0 9 0 16 0

(Oi Ei)2/Ei
0 0.1 2.5 1.6 3.6 0.9 0 0.9 0 1.6 11.2

100 100

Accept, since X20 = 11.2 < X20.05,9

Seatwork: Suppose there are 10 generated numbers which are, 0.95, 0.06, 0.09, 0.92, 0.76, 0.13, 0.43, 0.65, 0.63, 0.59. Test if these numbers are uniformly distributed form the interval [0,1].

You might also like