$30
Project: Random Numbers and Stochastic Experiments
Probability and Statistics with Applications to Computing
Laboratory Projects
0. Introduction and Background Material
0.1. Simulating Coin Toss Experiments
As mentioned in class, there are many ways to model stochastic experiments. The
following two programs simulate the toss of a fair coin N times, and calculate the
experimental probability of getting heads (p_heads) or tails (p_heads). Both
programs provide the same results, but they differ in the way the models are coded.
• The first model is programmed in Python using "for loops".
• The second model makes use of the arrays, and it is computationally very
efficient.
MODEL 1
import numpy as np
def coin(N):
heads, tails = 0, 0
for k in range(0,N):
coin=randint(0,2)
if coin==1:
heads=heads+1
else:
tails=tails+1
#
p_heads=heads/N
p_tails=tails/N
print('probability of heads = ', p_heads)
print('probability of tails = ', p_tails)
EE 381 Project: Random Numbers and Stochastic Experiments Dr. Chassiakos - Page 2
MODEL 2 – MORE EFFICIENT CODE
import numpy as np
def coin2(N):
coin=randint(0,2,N)
heads=sum(coin)
tails=N-heads
#
p_heads=heads/N
p_tails=tails/N
print('probability of heads = ', p_heads)
print('probability of tails = ', p_tails)
0.2. Roll of Two Fair Dice; Probability Mass Function (PMF)
This experiment models the roll of a pair of dice for N times. The sum each roll is
recorded, and stored in vector "s". The probability of each possible outcome is
calculated and plotted in a "Probability Mass Function" (PMF) plot
To create the plots, the simulation has been run for N=100000 times.
SUM OF THE ROLLS OF TWO FAIR DICE
import numpy as np
import matplotlib
import matplotlib.pyplot as plt
#
def sum2dice(N):
d1=randint(1,7,N)
d2=randint(1,7,N)
s=d1+d2
b=range(1,15) ; sb=size(b)
h1, bin_edges = histogram(s,bins=b)
b1=bin_edges[0:sb-1]
close('all')
#
fig1=plt.figure(1)
plt.stem(b1,h1)
plt.title('Stem plot - Sum of two dice')
plt.xlabel('Sum of two dice')
plt.ylabel('Number of occurrences')
fig1.savefig('1 EE381 Proj Stoch Exper-1.jpg') #
fig2=plt.figure(2)
p1=h1/N
plt.stem(b1,p1)
plt.title('Stem plot - Sum of two dice: Probability mass function')
plt.xlabel('Sum of two dice')
plt.ylabel('Probability')
fig2.savefig('1 EE381 Proj Stoch Exper-2.jpg')
EE 381 Project: Random Numbers and Stochastic Experiments Dr. Chassiakos - Page 3
EE 381 Project: Random Numbers and Stochastic Experiments Dr. Chassiakos - Page 4
0.3. Generating an unfair three-sided die
This example models the roll of a 3-sided die, with non-uniform probabilities. The
die has three sides [1,2,3] with probabilities: 123 [ , , ] [0.3, 0.6, 0.1] ppp = .
The experiment simulates the roll of the die for N=10,000 times, and the outcome of the
N rolls is plotted as a stem plot. The stem plot verifies that the three sides of the die
follow the required probabilities.
The following code will simulate a single roll of the three-sided die. The variable
“d” represents the number after the roll.
import numpy as np
#
n=3
p=array([0.3, 0.6, 0.1])
cs=cumsum(p)
cp=append(0,cs)
r=rand()
for k in range(0,n):
if rcp[k] and r<=cp[k+1]:
d=k+1
The following code will simulate the rolling of the three-sided die for N=10,000 times
and will plot the outcome as a stem plot.
import numpy as np
import matplotlib
import matplotlib.pyplot as plt
#
def ThreeSidedDie(p):
N=10000
s=zeros((N,1))
n=3
# p=array([0.3, 0.6, 0.1])
cs=cumsum(p)
cp=append(0,cs)
#
for j in range(0,N):
r=rand()
for k in range(0,n):
if rcp[k] and r<=cp[k+1]:
d=k+1
s[j]=d
#
EE 381 Project: Random Numbers and Stochastic Experiments Dr. Chassiakos - Page 5
# Plotting
b=range(1,n+2)
sb=size(b)
h1, bin_edges=histogram(s, bins=b)
b1=bin_edges[0:sb-1]
close('all')
prob=h1/N
plt.stem(b1,prob)
# Graph labels
plt.title('PMF for an unfair 3-sided die')
plt.xlabel('Number on the face of the die')
plt.ylabel('Probability')
plt.xticks(b1)
EE 381 Project: Random Numbers and Stochastic Experiments Dr. Chassiakos - Page 6
1. Function for a n-sided die
Write a function that simulates a single roll of a n-sided die. The inputs and outputs
of the function are:
Inputs:
• The probabilities for each side, given as a vector 1 2 [, , ] n p pp p =
Outputs:
• The number on the face of the die after a single roll, i.e. one number from the set
of integers {1,2, } n
Note: The sum 1 2 n pp p + + must be equal to 1.0, otherwise the probability values
are incorrect.
Save the function as: nSidedDie(p)
Test the function using the probability vector 1 2 [, , ] n p pp p = which has been
given to you. To create a random number with a single roll of the die you must use
the following command: r=nSidedDie(p)
To validate your function, roll the die for N=10,000 times and plot the outcome as a
stem plot.
SUBMIT a report that follows the guidelines as described in the syllabus.
The section on RESULTS must include The PMF in the form of a stem plot
The code must be provided in the appendix
2. Number of rolls needed to get a "7" with two dice
Consider the following experiment:
o You roll a pair of fair dice and calculate the sum of the faces. You are
interested in the number of rolls it takes until you get a sum of "7". The first
time you get a "7" the experiment is considered a "success". You record the
number of rolls and you stop the experiment.
o You repeat the experiment N=100,000 times. Each time you keep
track of the number of rolls it takes to have "success".
SUBMIT a report that follows the guidelines as described in the syllabus.
The section on RESULTS must include The PMF in the form of a stem plot
The code must be provided in the appendix
EE 381 Project: Random Numbers and Stochastic Experiments Dr. Chassiakos - Page 7
3. Getting 50 heads when tossing 100 coins
Consider the following experiment:
o You toss 100 fair coins and record the number of "heads". This is
considered a single experiment. If you get exactly 50 heads, the experiment is
considered a "success".
o You repeat the experiment N=100,000 times. After the N experiments
are completed count the total successes, and calculate the probability of
success, i.e. the probability of getting exactly 50 heads.
SUBMIT a report that follows the guidelines as described in the syllabus.
The section on RESULTS must include the calculated answer. Use the table
below for your answer. Note: You will need to replicate the table in your Word
file, in order to provide the answer in your report. Points will be taken off if you
do not use the table.
The code must be provided in the appendix
Probability of 50 heads in tossing 100 fair coins
Ans. p = 0.0798
EE 381 Project: Random Numbers and Stochastic Experiments Dr. Chassiakos - Page 8
4. The Password Hacking Problem
Your computer system uses a 4-letter password for login. For our purposes the
password is restricted to lower case letters of the alphabet only. It is easy to
calculate that the total number of passwords which can be produced is 4
n = 26 .
o A hacker creates a list of random 4-letter words, as candidates for
matching the password. Note that it is possible that some of the words may
be duplicates. The number that you must use has been given to you.
o You are given your own 4-letter password and you are going to check
if the hacker’s list contains at least one word that matches your password.
This process of checking is considered one experiment. If a word in the list
matches your password, the experiment is considered a success. Repeat the
experiment for N = 1000 times and find the probability that at least one of
the words in the hacker's list will match your password.
o The hacker creates a longer list of k* random 4-letter words. The
numbers k and have been given to you. Repeat the previous experiment for
N = 1000 times and find the probability that at least one of the words in
the hacker's list will match your password.
o Repeat the previous experiment for N = 1000 times to find the
approximate number ( ) m of words that must be contained in the hacker's
list so that the probability of at least one word matching the password is
p = 0.5. You should do this by trial and error: assume a value for ( ) m and
calculate the corresponding probability as you did in the previous part. The
answer will be value of ( ) m that makes this probability approximately
equal to p = 0.5.
SUBMIT a report that follows the guidelines as described in the syllabus.
The section on RESULTS must include the calculated answer. Use the table
below for your answer. Note: You will need to replicate the table in your Word
file, in order to provide the answer in your report. Points will be taken off if you
do not use the table.
The code must be provided in the appendix
Hacker creates words
Prob. that at least one of the words matches the password p = 0.1965
Hacker creates k* words
Prob. that at least one of the words matches the password p = 0.8879
p = 0.5
Approximate number of words in the list m = 317,000
5. References
[1] "Introduction to Probability," by H. Pishro-Nik. Available online at:
https://www.probabilitycourse.com