m20f11 Laproj Cx

advertisement
Vincent La
Zachary Hamaker
Can we beat the House?
Whether it is in the “Bellagio” in Las Vegas, the “Clermont Club” in London, or the “Borgata” in Atlantic
City, gamblers everywhere ask themselves “Can we beat the House?” Except for the most experienced of
gamblers playing a select few games, the answer to said question is, “No.” However, for most of us evenkeeled amateurs, the point of going gambling is not necessarily to win money, but simply for the fun
experience. Of course, losing a large amount of money certainly is not a positive experience either. So instead,
gamblers may not ask themselves “How to beat the House?” but rather, “Which game can I play to lose the
least amount of money?”
Casinos, like any other business, need to make profits in order to stay in operation. Logically, it is not
hard to understand why most, if not all, casino games favor the House. However, a typical casino will host
many different games, and each game has different expected winnings. Of course, gambling is very much tied
into probability and one can use probability to calculate the Expected Value of the winnings for various games.
This project will use MatLab to simulate various casino games, namely Roulette and Craps, in order to calculate
the Expected winnings for each game. This project will then take the results of the MatLab programs and
analyze not only the expected winnings of the game overall, but also if the expected winnings of the game
might change depending on various player actions.
Roulette is an extremely popular Casino game played throughout the world. For this project, we will
assume American Rules. In the game, a croupier spins a wheel in one direction, and then spins a ball in the
opposite direction. The wheel contains thirty-eight slots, numbered one to thirty six, and then one slot being
zero and another being double zero, “00”. Theoretically the ball landing on any slot is completely random and
equally likely as landing on another slot. The game play is relatively simple, essentially the same as picking a
random number from zero to 36 or “double zero”. However, there are 17 different ways of betting and playing
the game, categorized as “Inside Bets” and “Outside Bets”. Outside Bets typically have better odds of winning
but payout less, while Inside Bets typically have worse odds of winning but payout more. The Inside Bets a
La 2
player can make are called: “Straight-Up, Split, Street, Corner, Six Line, Trio, Basket, Row 00, and Top line”. The
Outside Bets a player can make are called: “1 to 18, 19 to 36, Red or Black, Even or Odd, Dozen Bets, Column
Bets, and Snake Bet”. A gambler, upon deciding to play Roulette may ask “What are my odds of winning if I
play Roulette?” However, with all of these betting schemes, it may be more natural to ask “What should I bet
to maximize my winnings?” This project will use a MatLab program to simulate games of Roulette, and
calculate the expected winnings depending on the bet the player makes. In this project we will simulate games
of Roulette, with each game using a different type of bet. Most of the bets are self-explanatory and the ones
that are not are easy to understand with some basic knowledge of the game. A player who makes a “1 to 18”
bet wins if the ball lands on any number between one and eighteen. If the ball lands anywhere else, the player
loses his initial bet. The payout for this bet is 1:1. Other bets that may not be so simple to understand are
Column Bets, Straight-Up, Top Line, and Row00. When a player makes a “Column Bet” that player must then
declare either: 1st Column, 2nd Column, or 3rd Column. If one were to look at a Roulette betting layout
(Appendix A), one can see that the numbers are divided into three columns. If the player bets “1st Column”,
that player will win if the ball lands on any number in the first column, i.e. 1, 4, 7, 10, 13…etc. The bets of “2nd
Column” and “3rd Column” work similarly. The payout for “Column Bet” is 2:1. The “Straight-Up” bet is simply a
player bets only on one specific number and can only win if the ball lands on that specific number. The payout
for this bet is 35:1. A player making a “Top Line” bet wins if the ball lands on any space on the top line – 0, 00,
1, 2, or 3. The payout for this bet is 6:1. A table detailing the different types of bets, winning spaces, and
payouts can be found in Appendix B.
In order to calculate the expected winnings, the MatLab program simulates one hundred players
making five thousand consecutive bets and then averages the winnings from each of the five thousand
outcomes. The program will then output the expected winnings for a player playing one game executing a
specific bet. The results are as follows:
Types of Bet
Even
Odd
Simulated Expected Winnings of One Game Using
MatLab Program ($1 Bet each game)
-0.0504
-0.0508
La 3
Red
Black
1 to 18
19 to 36
1st Dozen
2nd Dozen
3rd Dozen
1st Column
2nd Column
3rd Column
Row 00
Top Line
Straight-Up
-0.0501
-0.0502
-0.0499
-0.0478
-0.0510
-0.0542
-0.0537
-0.0565
-0.0527
-0.0508
-0.0533
-0.0760
-0.0540
(See Appendix C for an example Display Result and Appendix D for the MatLab Code used)
After these simulations, we reach a conclusion which may not have been so obvious beforehand. For the most
part, it does not matter what type of bet the player makes. No matter what, the player’s expected winnings for
each game (on one dollar bets) is about -0.05. In fact, upon further research, the actual expected winnings is
about -0.053. However, something extremely interesting is that only for the bet of “Top Line” is the expected
not about -0.053. In fact, in our simulation, our expected winnings was significantly lower at a value of -0.076.
Upon further research, the expected winnings for a bet of “Top Line” is about -0.079. In fact, a bet of “Top
Line” is the only bet in Roulette that does not have an expected winnings of about -0.053! Therefore, we can
conclude that a player playing Roulette should never make a bet of “Top Line”!
Another fast-paced casino game is Craps. Craps is generally considered one of the best games in
Casino, not only because of the exciting nature of the game, but also because of the extremely generous house
odds of the game. Depending on certain rules, players can use certain betting strategies to lower edge as low
as 0.02 percent! Because of this, Craps is generally considered the game with the best odds against the house.
This project will use a MatLab program to simulate Craps games and calculate the expected winnings of each
game. Using these calculations, this project will demonstrate what the best betting strategy is.
The game is played by throwing two dice. The first part of the game is relatively simple. Each player
must first make an initial bet, called the Pass Line bet. The Pass Line bet pays one-to-one, which means that if a
player wins, that player wins an amount equal to the Pass Line bet plus the original Pass Line bet. If a player
La 4
loses, that player loses his original Pass Line bet. On the first roll, if the “shooter”, or the person rolling the
dice, rolls a seven or an eleven, the bettor wins. If the first roll is a two, three, or a twelve, the bettor loses.
However, if the roll is anything else: a four, five, six, eight, nine, or ten, then the game keeps going! In this
situation, a Point is established. If the first roll is not a two, three, seven, eleven, or twelve, then that roll
becomes the Point. So, for example, if the first roll is a seven, the bettor wins. If the first roll is a 12 the bettor
loses. If the first roll is a five, then the Point is five and the game keeps going. After this point, in order to win,
the player must keep rolling until he rolls the Point. After the Point is established, the player will lose if a seven
is rolled. So for example, if the first roll is a five, the player rolls again. If the next roll is a seven, the player
loses the Pass Line bet. In another example, if the first roll is a six, the player rolls again. If the next roll is a two,
nothing happens, because “two” is neither the Point nor a seven. If the next roll is a three, nothing happens
again. If the next roll is a six, then the player has rolled the Point again and therefore wins the Pass Line bet.
The first step in this project in considering Craps, is the MatLab program first simulates a craps game
only with Pass Line betting. With only Pass Line betting, the program simulates that with one-dollar bets, the
player has expected winnings of about -0.0152, so the House advantage in this game if the player only makes
Pass Line bets is about 1.52%. However, there is another part of the betting scheme in Craps which is called
the Odds bet. The addition of the Odds bet is what makes this game not only more fun, but also more inductive
to strategy. The Odds bet is made only after the Point is established, i.e. only when the first roll is not a seven,
eleven, two, three, or twelve. After the Point is established, a player can choose to make an Odds bet. If a
player wins (i.e. rolling the Point before rolling the seven) the player wins both the Odds bet and the Pass Line
bet. However, if the player loses (i.e. rolling a seven before rolling the Point), the player loses both the Odds
bet and the Pass Line bet. However, the Odds bet does not pay out one-to-one. In fact, it pays what is called
true odds. A true odds bet simply means that the Odds bet pays out according to how hard it is to roll the Point
before a seven. For example, if the Point is a four or a ten, a player only has 3/36 chance of rolling the Point,
while a 6/36 chance of rolling a seven, so therefore the Odds bet would pay 2:1 for a Point of a four or a ten.
Similarly, the Odds bet pays out 1.5:1 for a Point of a five or a nine, and 1.2:1 for a Point of a six or eight.
La 5
Because of the higher payouts for Odds bet, the Odds bet actually contains absolutely zero house advantage.
So therefore, if a bettor maximizes the Odds bet, the house advantage would be significantly reduced! Because
of this, Casinos will limit the amount you can make on an Odds bet by multiples of the Pass Line bet. For
example if the Casino only allows 1x Odds bet, a player’s maximum Odds bet is equal to the player’s Pass Line
bet. If the Casino allows 2x Odds bet, a player’s maximum Odds bet is equal to two times a player’s Pass Line
bet. The logic is the same for 3x, 4x… etc.
This project then uses a MatLab program to simulate a Craps game with Odds betting, and compares
this result to the previous result of only Pass Line betting. Results of MatLab program with Odds betting: With
a Pass Line bet of 0.5 and an Odds bet of 0.5 (total $1), the program simulates winnings of -0.0077 which
translates to a 0.77% house advantage. We already see that the house advantage is decreasing for 1x Odds
bet!
Now let’s assume the Casino allows 2x Odds betting. Assume a player bets a Pass Line of 1/3. The
maximum Odds bet is 2/3. If a player bets this (total bet of $1) our MatLab program simulates loss of 0.0038
which corresponds to only a 0.38% house advantage!
So, let’s now see what happens if the Casino allows for 100x Odds betting. Our MatLab program
simulates a loss of only 0.0002 which corresponds to only a 0.02% house advantage! Therefore, we see with
proper betting strategy, a player can drastically reduce the house advantage when playing Craps. Essentially, a
player’s winning strategy is to minimize the Pass Line bet and maximize the Odds bet.
While Roulette and Craps are relatively simple games to play, this project shows that there is some
significant and non-trivial strategy behind each game. Players not caring to look at the mathematics behind
each game may not be aware of the little tricks which are innate in the character of the game. This project
showed something extremely interesting for Roulette: that even though there are many different betting
schemes, each betting scheme produces the same expected winnings, except for one. And so we can conclude
from this project that betting “Top Line” in Roulette is not a smart choice. For Craps, this project showed that it
is advantageous to maximize the Odds bet, since this drastically reduces the House Advantage!
La 6
Works Cited
"Craps Lessons: Learn How to Play Craps, and Practice." Top Ten Las Vegas Tips, plus Our How-toGamble Guide. Web. 27 Nov. 2011. <http://vegasclick.com/games/craps.html>.
Gould, Ronald. Mathematics in Games, Sports, and Gambling: the Games People Play. Boca Raton:
CRC, 2010. Print.
"♠Roulette -- Strategy and Odds by The Wizard of Odds." Wizard of Odds: The Last Word on Gambling
Strategy. Web. 27 Nov. 2011. <http://wizardofodds.com/roulette>.
La 7
Appendix A (Roulette Board)
La 8
Appendix B (Roulette Table of Payouts)
Bet name
Winning spaces
Payout
0
0
35 to 1
00
00
35 to 1
Straight up
Any single number
35 to 1
Row 00
0, 00
17 to 1
Split
any two adjoining numbers vertical or horizontal
17 to 1
Basket
0, 1, 2 or 00, 2, 3 or 0, 00, 2
11 to 1
Street
any three numbers horizontal (1, 2, 3 or 4, 5, 6, etc.)
11 to 1
Corner
any four adjoining numbers in a block (1, 2, 4, 5 or 17, 18, 20, 21, etc.)
8 to 1
Top line
0, 00, 1, 2, 3
6 to 1
Six line
any six numbers from two horizontal rows (1, 2, 3, 4, 5, 6 or 28, 29, 30, 31, 32, 33 etc.)
5 to 1
1st column
1, 4, 7, 10, 13, 16, 19, 22, 25, 28, 31, 34
2 to 1
2nd column 2, 5, 8, 11, 14, 17, 20, 23, 26, 29, 32, 35
2 to 1
3rd column
3, 6, 9, 12, 15, 18, 21, 24, 27, 30, 33, 36
2 to 1
1st dozen
1 through 12
2 to 1
2nd dozen
13 through 24
2 to 1
3rd dozen
25 through 36
2 to 1
Odd
1, 3, 5, ..., 35
1 to 1
Even
2, 4, 6, ..., 36
1 to 1
Red
1, 3, 5, 7, 9, 12,
14, 16, 18, 19, 21, 23,
25, 27, 30, 32, 34, 36
1 to 1
Black
2, 4, 6, 8, 10, 11,
13, 15, 17, 20, 22, 24,
26, 28, 29, 31, 33, 35
1 to 1
1 to 18
1, 2, 3, ..., 18
1 to 1
19 to 36
19, 20, 21, ..., 36
1 to 1
La 9
Appendix C (Roulette Display Results)
>> Roulette(1,1000,1000)
Here is the game of Roulette. What type of bet do you want to make?
You have the following options:
1. Even
2. Odd
3. Red
4. Black
5. 1to18
6. 19to36
7. 1stDozen
8. 2ndDozen
9. 3rdDozen
10. 1stColumn
11. 2nd Column
12. 3rd Column
13. Row00
14. Top Line
15. Straight-Up
Remember when typing the bet, must be EXACTLY the same spacing and CAPS.
ALSO because it is a string you must make sure to type ' around the word.
What type of bet would you like to make? 'Even'
ans =
-0.0501
>> Roulette(1,1000,1000)
Here is the game of Roulette. What type of bet do you want to make?
You have the following options:
1. Even
2. Odd
3. Red
4. Black
5. 1to18
6. 19to36
7. 1stDozen
8. 2ndDozen
9. 3rdDozen
10. 1stColumn
11. 2nd Column
12. 3rd Column
13. Row00
14. Top Line
15. Straight-Up
Remember when typing the bet, must be EXACTLY the same spacing and CAPS.
ALSO because it is a string you must make sure to type ' around the word.
What type of bet would you like to make? 'Top Line'
ans =
-0.0815
La 10
Appendix D (Roulette MatLab Code)
%Programming conventions for roulette:
%Red = the odd numbers between 1 and 36.
%Black = the even numbers between 1 and 36.
%0 = 37
%00 = 38.
function avg_winnings = Roulette(bet, num_bets, num_simulations)
i=1;
k=1;
Win = zeros(1,num_simulations);
FirstTime=0;
display('Here is the game of Roulette. What type of bet do you want to make?')
display('You have the following options:')
display('1. Even')
display('2. Odd')
display('3. Red')
display('4. Black')
display('5. 1to18')
display('6. 19to36')
display('7. 1stDozen')
display('8. 2ndDozen')
display('9. 3rdDozen')
display('10. 1stColumn')
display('11. 2nd Column')
display('12. 3rd Column')
display('13. Row00')
display('14. Top Line')
display('15. Straight-Up')
display('Remember when typing the bet, must be EXACTLY the same spacing and CAPS.')
display('ALSO because it is a string you must make sure to type '' around the word.')
WhatBet=input('What type of bet would you like to make?');
while(k<=num_simulations)
i=1;
winnings=0;
while(i<=num_bets)
roll=randi(38);
if (strcmp(WhatBet,'Even'))
if(rem(roll,2)==0 && roll~=38)
winnings=winnings+bet;
else
winnings=winnings-bet;
end
end
if (strcmp(WhatBet,'Odd'))
if(rem(roll,2)==1 && roll~=37)
winnings=winnings+bet;
else
winnings=winnings-bet;
end
end
if (strcmp(WhatBet,'Red'))
if(strcmp(RouletteColor(roll),'Red'))
winnings=winnings+bet;
else
winnings=winnings-bet;
end
La 11
end
if (strcmp(WhatBet,'Black'))
if(strcmp(RouletteColor(roll),'Black'))
winnings=winnings+bet;
else
winnings=winnings-bet;
end
end
if (strcmp(WhatBet,'1to18'))
if(roll>=1 && roll<=18)
winnings=winnings+bet;
else
winnings=winnings-bet;
end
end
if (strcmp(WhatBet,'19to36'))
if(roll>=19 && roll<=36)
winnings=winnings+bet;
else
winnings=winnings-bet;
end
end
if (strcmp(WhatBet,'1stDozen'))
if (roll>=1 && roll <= 12)
winnings=winnings+(2*bet);
else
winnings=winnings-bet;
end
end
if (strcmp(WhatBet,'2ndDozen'))
if (roll>=13 && roll <= 24)
winnings=winnings+(2*bet);
else
winnings=winnings-bet;
end
end
if (strcmp(WhatBet,'3rdDozen'))
if (roll>=25 && roll <= 36)
winnings=winnings+(2*bet);
else
winnings=winnings-bet;
end
end
if (strcmp(WhatBet,'1stColumn'))
if (rem(roll,3)==1 && roll~=37)
winnings=winnings+(2*bet);
else
winnings=winnings-bet;
end
end
if (strcmp(WhatBet,'2ndColumn'))
if (rem(roll,3)==2 && roll~=38)
winnings=winnings+(2*bet);
else
winnings=winnings-bet;
end
end
if (strcmp(WhatBet,'3rdColumn'))
if (rem(roll,3)==0)
winnings=winnings+(2*bet);
else
La 12
winnings=winnings-bet;
end
end
if (strcmp(WhatBet,'Row00'))
if(roll==37 || roll==38)
winnings=winnings+(17*bet);
else
winnings=winnings-bet;
end
end
if (strcmp(WhatBet,'Top Line'))
if(roll==37 || roll==38 || roll == 1 || roll == 2 || roll==3)
winnings=winnings+(6*bet);
else
winnings=winnings-bet;
end
end
if (strcmp(WhatBet,'Straight-Up'))
if(FirstTime==0)
number=input('What Number do you want to bet on?');
FirstTime=1;
end
if(roll==number)
winnings=winnings+(35*bet);
else
winnings=winnings-bet;
end
end
i=i+1;
end
Win(k)=winnings;
k=k+1;
end
avg_winnings = (sum(Win))/(num_simulations*num_bets);
end
function Color = RouletteColor(bet)
if((bet>=1 && bet<= 10) || (bet>=19 && bet<=28))
if (rem(bet,2)==1)
Color='Red';
end
if (rem(bet,2)==0)
Color='Black';
end
end
if((bet>=11 && bet<=18) || (bet>=29 && bet<=36))
if (rem(bet,2)==1)
Color='Black';
end
if (rem(bet,2)==0)
Color='Red';
end
end
if(bet==37 || bet==38)
Color='Green';
end
end
La 13
Appendix E (Craps MatLab Code)
function avg_winnings = CrapsPL(num_bets, num_simulations)
k=1;
Win = zeros(1,num_simulations);
PL_Bet=1; %Pass Line Bet
while(k<=num_simulations)
i=1;
winnings=0;
Point=0;
while(i<=num_bets)
RollA=randi(6);
RollB=randi(6);
Roll=RollA+RollB;
if (Roll==7 || Roll==11)
winnings=winnings+PL_Bet;
end
if (Roll==2 || Roll==3 || Roll==12)
winnings=winnings-PL_Bet;
end
if (Roll==4 ||Roll==5 ||Roll==6 ||Roll==8 ||Roll==9 ||Roll==10)
Point=Roll;
end
while (Point~=0)
RollA=randi(6);
RollB=randi(6);
Roll=RollA+RollB;
if (Roll==Point)
winnings=winnings+PL_Bet;
Point=0;
end
if (Roll == 7)
winnings=winnings-PL_Bet;
Point=0;
end
end
i=i+1;
end
Win(k)=winnings;
k=k+1;
end
avg_winnings = (sum(Win))/(num_simulations*num_bets);
end
function avg_winnings = CrapsWO(num_bets, num_simulations)
k=1;
Win = zeros(1,num_simulations);
PL_Bet=1/101; %Pass Line Bet
Odds_Bet=100/101;
while(k<=num_simulations)
i=1;
winnings=0;
while(i<=num_bets)
Point=0;
RollA=randi(6);
RollB=randi(6);
La 14
Roll=RollA+RollB;
if (Roll==7 || Roll==11)
winnings=winnings+PL_Bet;
end
if (Roll==2 || Roll==3 || Roll==12)
winnings=winnings-PL_Bet;
end
if (Roll==4 ||Roll==5 ||Roll==6 ||Roll==8 ||Roll==9 ||Roll==10)
Point=Roll;
end
while (Point~=0)
RollA=randi(6);
RollB=randi(6);
Roll=RollA+RollB;
if (Roll==Point)
if(Point==4 || Point == 10)
winnings=winnings+PL_Bet+(2*Odds_Bet);
Point=0;
end
if(Point==5 || Point == 9)
winnings=winnings+PL_Bet+(1.5*Odds_Bet);
Point=0;
end
if(Point==6 || Point == 8)
winnings=winnings+PL_Bet+(1.2*Odds_Bet);
Point=0;
end
end
if (Roll == 7)
winnings=winnings-PL_Bet-Odds_Bet;
Point=0;
end
end
i=i+1;
end
Win(k)=winnings;
k=k+1;
end
avg_winnings = (sum(Win))/(num_simulations*num_bets);
end
Download