Page 4

```Matlab: Buffon's Needle Problem

throws = 10000;   % percent makes the rest of the line a comment
x=rand(1,throws); % a vector of 10000 pseudorandom numbers
% in the range [0,1)
theta=rand(1,throws); % semicolon supresses printing
theta=0.5*pi*theta; % theta now 10000 random numbers between 0 and pi/2
hits= x<=0.5*sin(theta); % hits is a vector of 0's where false
% and 1's where true
sum(hits) % no semicolon prints the number of hits out of the 10000 throws
piEst=throws/sum(hits)
```

Page 6

```Matlab: Histogramming Buffon's Needle Problem

throws = 100; % 100 trials
replications=2000;
for i=1:replications
x=rand(1,throws);
theta=0.5*pi*rand(1,throws);
hits= x<=0.5*sin(theta);
y(i)=sum(hits)/throws; % y= result vector
end
hist(y) % let hist pick the bins
recipEst=sum(y)/replications
vVec=(y-recipEst).*(y-recipEst); % vector of sqr deviations
v=sum(vVec)/(replications-1); % sample variance
stddev=sqrt(v) % sample standard deviation
piEst=1/recipEst
```

Page 9

```Matlab: Gambler's Ruin

R=zeros(1,2000000); % vector of 2,000,000 zeros
i=1; R(i)=100; % gambler's initial fortune
while( R(i) > 0 & R(i) < 2100 )
i=i+1;
W = (rand  <  0.5); % random value of 0 or 1
W = 2*W - 1; % random value of +/-1
R(i)= R(i-1)+W; % gamblers new fortune
end
plot(1:length(R),R) % plot R against its index
%%% run for investigating running time
for j=1:20
i=1; R(i)=100;
while( R(i) > 0 & R(i) < 2100 )
i=i+1;
W = 2*(rand  <  0.5)-1;
R(i)= R(i-1)+W;
end
T(j)=i
end
hist(T)
```

Page 13

```Matlab: Dice Rolls

red = floor(6*rand(1,1000))+1; % vector of 1000 random values 1,2,...,6
green  = floor(6*rand(1,1000))+1; % ditto for 2nd die
dice = red+green;
x=0:0.1:13; % vector of values from 0 to 13 incrementing by 0.1
for i=1:length(x)
cdf(i)=sum(dice <= x(i));
end
plot(x,cdf)
```

Page 31

```Matlab: Middle Sine Random Number Generator

tenpow5 = 100000;
x=0.5;
for i=1:10
x=tenpow5*sin(x);
w = floor(x); % first 5 digits
x = x-w % digits after the 5th
end
% now do some timing
tic
for i=1:100000
x=tenpow5*sin(x);
w = floor(x);
x = x-w;
end
toc %0.5314
% compare with Matlab's built-in generator
tic;
x=rand(1,100000);
toc; %0.0193
```

Page 32

```Matlab: Middle Square Random Number Generator

tenpow7 = 1000000;
x = 0.1234567; % initial seed
for i=1:10
x = x*tenpow7; % x now an integer
w = x*x;  % square
w = floor(w/1000); % drop last three digits
w = w/tenpow7;  % 7 decimal digits
x = w - floor(w) % drop the integer digits
```

Page 39

```Matlab: Pi Estimation

nTrials = 10000;
x=rand(1,nTrials);
y=rand(1,nTrials);
hits=sum(x.^2+y.^2 < 1)
piEst = 4*hits/nTrials
```

Page 40

```Matlab: Coupon Collecting

nLetters = 9; %ANGELFISH
nTrials = 10000;
for i=1:nTrials
success = 0;
nTries(i) = 0;
for j=1:nLetters
ANGELFISH(j)=0; %reset to letter not achieved
end
while success == 0
nTries(i) = nTries(i)+1; %inc. count
if sum(ANGELFISH)==nLetters
success = 1;
end
end
end
hist(nTries)
```

Page 42

```Matlab: Card Shuffling

n = 4; % a permutation of 4 objects
m = n; % do the whole deck
perm = 1:n %identity permutation
for i=1:m % if m=n the last is superfluous
j = i+floor((1+n-i)*rand); % from the remaining
swap = perm(i);
perm(i) = perm(j);
perm(j) = swap;
end
perm
```

Page 47

```Matlab: Exercise 27.

low=0; high=0;
for i=1:10000000
x=rand;
if x < 0.1
low = low + 1;
y=rand; % for baseline comment this out
else
high = high + 1;
y=rand; z=rand; % for baseline comment out
end
end
low
high
```