Presentation is loading. Please wait.

Presentation is loading. Please wait.

Stat 35b: Introduction to Probability with Applications to Poker Outline for the day: 1.Project B example, again 2.Booth vs. Ivey 3.Bayes Rule examples.

Similar presentations


Presentation on theme: "Stat 35b: Introduction to Probability with Applications to Poker Outline for the day: 1.Project B example, again 2.Booth vs. Ivey 3.Bayes Rule examples."— Presentation transcript:

1 Stat 35b: Introduction to Probability with Applications to Poker Outline for the day: 1.Project B example, again 2.Booth vs. Ivey 3.Bayes Rule examples 4.Variance, CLT, and prop bets 5.CLT examples (pairs, profit) Computer Project B will be due this Saturday at 8pm!   u 

2 TEAMS FOR PROJECT B: team a james danny team b arian janet team c pui lok team e john jason team f mei ka-lim team g tingting chen team h lung yingtian

3 straightdraw1 = function(x) ## returns 4 is there are 2 possibilities for a straight. ## returns 2 for a gutshot straight draw. ## returns 0 otherwise ## Note: returns 26 if you already have a straight! flushdraw1 = function(x) ## returns the max number of one suit ## (4 if flush draw, 5 if a flush already!) handeval = function(num1,suit1){ Straight-flush: return 8 million - 8,999,999 4 of a kind: return 7 million - 7,999,999 Full house: 6 million - 6,999,999, etc.. nada 1pr 2pr 3-kind straight flush full-house 4-kind str-flush. 0 1mil 2mil 3mil 4mil 5mil 6mil 7mil 8mil 9mil

4 Proj. B example (winner CallingStation). See www.stat.ucla.edu/~frederic/35b/F08/projectBexamples.txt zelda = function(numattable1, crds1, board1, round1, currentbet, mychips1, pot1, roundbets, blinds1, chips1, ind1, dealer1, tablesleft){ a1 = 0 ## how much I'm gonna end up betting. Note that the default is zero. a2 = min(mychips1, currentbet) ## how much it costs to call if(round1 == 1){ ## pre-flop: ## AK: Make a big raise if nobody has yet. Otherwise call. ## AQ: call a small raise, or make one if nobody has yet. ## AJ, AT, KQ, KJ, QJ: call a tiny raise. ## A9, KT, K9, QT, JT, T9: call a tiny raise if in late position (within 2 of the dealer). ## Suited A2-AJ: call a small raise. ## 22-99: call a small raise. ## TT-KK: make a huge raise. If someone's raised huge already, then go all in. ## AA: make a small raise. If there's been a raise already, then double how much it is to you. a3 = 2*blinds1+1 ## how much a tiny raise would be a4 = 4*blinds1+1 ## how much a small raise would be a5 = max(8*blinds1,mychips1/4)+1 ## how much a big raise would be a6 = max(12*blinds1,mychips1/2)+1 ## how much a huge raise would be a7 = dealer1 - ind1 if(a7 < -.5) a7 = a7 + numattable1 ## your position: a7 = how many hands til you're dealer if((crds1[1,1] == 14) && (crds1[2,1] == 13)){ a1 = max(a2,a5) }

5 if((crds1[1,1] == 14) && (crds1[2,1] == 12)){ if(a2 < a4){ a1 = a4 } else if(a2 > a5){ a1 = 0 } else a1 = a2 } if(((crds1[1,1] == 14) && ((crds1[2,1] 9.5))) || ((crds1[1,1] == 13) && (crds1[2,1] > 10.5)) || ((crds1[1,1] == 12) && (crds1[2,1] == 11))){ if(a2 < a3) a1 = a2 } if(((crds1[1,1] == 14) && (crds1[2,1] == 9)) || ((crds1[1,1] == 13) && ((crds1[2,1] == 10) || (crds1[2,1] == 9))) || ((crds1[1,1] == 12) && (crds1[2,1] == 10)) || ((crds1[1,1] == 11) && (crds1[2,1] == 10)) || ((crds1[1,1] == 10) && (crds1[2,2] == 9))){ if((a2 < a3) && (a7<2.5)) a1 = a2 } if((crds1[1,2] == crds1[2,2]) && (crds1[1,1] == 14) && (crds1[2,1] < 11.5)){ if(a2<a4) a1 = a2 ## Note: this trumps the previous section, since it comes later in the code. }

6 if((crds1[1,1] == crds1[2,1])){ ## pairs: if(crds1[1,1] < 9.5){ if(a2 < a4) a1 = a2 } else if(crds1[1,1] < 13.5){ if(a2<a5) a1 = a5 else a1 = mychips1 } else { if(a2 < blinds1 +.5) a1 = a4 else a1 = min(2*a2,mychips1) }} } if(round1 == 2){ ## post-flop: ## If there's a pair on the board and you don't have a set, then check/call up to small bet. ## Same thing if there's 3-of-a-kind on the board and you don't have a full house or more. ## If you have top pair or an overpair or two pairs or a set, make a big bet (call any bigger bet). ## Otherwise, if nobody's made even a small bet yet, then with prob. 20% make a big bluff bet. ## If you're the last to decide and nobody's bet yet, then increase this prob. to 50%. ## If you have an inside straight draw or flush draw then make a small bet (call any bigger bet). ## If you have a straight or better, then just call. ## Otherwise fold. a5 = min(sum(roundbets[,1]),mychips1) ## how much big bet would be (prev round's pot size) a6 = min(.5*sum(roundbets[,1]),mychips1) ## how much a small bet would be x = handeval(c(crds1[1:2,1], board1[1:3,1]), c(crds1[1:2,2], board1[1:3,2])) ## what you have x1 = handeval(c(board1[1:3,1]),c(board1[1:3,2])) ## what's on the board y = straightdraw1(c(crds1[1:2,1], board1[1:3,1]))

7 z = flushdraw1(c(crds1[1:2,2], board1[1:3,2])) topcard1 = max(board1[1:3,1]) a7 = runif(1) ## random number uniformly distributed between 0 and 1 a8 = (1:numattable1)[roundbets[,1] == roundbets[ind1,1]] ## others who can still bet with you ## The next 5 lines may seem weird, but the purpose is explained in the next comment: a9 = a8 - dealer1 for(i in 1:length(a9)) if(a9[i]<.5) a9[i] = a9[i] + numattable1 a10 = ind1 - dealer1 if(a10 <.5) a10 = a10 + numattable1 a11 = 2*(a10 == max(a9)) ## So a11 = 2 if you're last to decide; otherwise a11 = 0. if((x1 > 1000000) && (x < 3000000)){ if(a2 < a6) a1 = a2 } else if((x1 > 3000000) && (x < 6000000)){ if(a2 < a6) a1 = a2 } else if(x > 1000000 + 15^3*topcard1){ a1 = max(a5,a2) } else if((a2 1)))){ a1 = a6 } if((y == 4) || (z == 4)) a1 = max(a6, a2) if(x > 4000000) a1 = a2 }

8 if(round1 == 3){ ## after turn: ## If there's a pair on the board and you don't have a set, then check/call up to small bet. ## Same thing if there's 3-of-a-kind on the board and you don't have a full house or more. ## Otherwise, if you have top pair or better, go all in. ## If you had top pair or overpair but now don't, then check/call a medium bet but fold to more. ## If you have an inside straight draw or flush draw then check/call a medium bet as well. ## Otherwise check/fold. a6 = min(1/3*sum(roundbets[,1:2]),mychips1) ## small bet (1/3 of prev round's pot size) a5 = min(.75*sum(roundbets[,1:2]),mychips1) ## medium bet (3/4 of prev round's pot size) x = handeval(c(crds1[1:2,1], board1[1:4,1]), c(crds1[1:2,2], board1[1:4,2])) ## what you have x1 = handeval(c(board1[1:4,1]),c(board1[1:4,2])) ## what's on the board y = straightdraw1(c(crds1[1:2,1], board1[1:4,1])) z = flushdraw1(c(crds1[1:2,2], board1[1:4,2])) topcard1 = max(board1[1:4,1]) oldtopcard1 = max(board1[1:3,1]) if((x1 > 1000000) && (x < 3000000)){ if(a2 < a6) a1 = a2 } else if((x1 > 3000000) && (x < 6000000)){ if(a2 < a6) a1 = a2 } else if(x > 1000000 + 15^3*topcard1){ a1 = mychips1 } else if(x > 1000000 + 15^3*oldtopcard1){ if(a2 < a5) a1 = a2 } else if((y == 4) || (z == 4)){ if(a2 < a5) a1 = a2 } }

9 if(round1 == 4){ ## after river: ## If there's a pair on the board and you don't have a set, then check/call up to small bet. ## Same thing if there's 3-of-a-kind on the board and you don't have a full house or more. ## Otherwise, if you have two pairs or better, go all in. ## If you have one pair, then check/call a small bet. ## With nothing, go all-in with probability 10%; otherwise check/fold. a6 =.45+runif(1)/10 ## random number between.45 and.55 a5 = min(a6*sum(roundbets[,1:3]),mychips1) ## small bet~ 1/2 of pot size; varies randomly x = handeval(c(crds1[1:2,1], board1[1:5,1]), c(crds1[1:2,2], board1[1:5,2])) x1 = handeval(c(board1[1:5,1]),c(board1[1:5,2])) ## what's on the board if((x1 > 1000000) && (x < 3000000)){ if(a2 < a5) a1 = a2 } else if((x1 > 3000000) && (x < 6000000)){ if(a2 < a5) a1 = a2 } else if(x > 2000000){ a1 = mychips1 } else if(x > 1000000){ if(a2 < a5) a1 = a2 } else if(runif(1)<.10){ a1 = mychips1 } round(a1) } ## end of zelda ……………. Booth vs. Ivey

10 Bayes’ Rule If B 1, …, B n are disjoint events with P(B 1 or … or B n ) = 1, then P(B i | A) = P(A | B i ) * P(B i ) ÷ [ ∑P(A | B j )P(B j )]. Ex. Let “disease” mean you really have the disease, and let “+” mean the test says you are positive; “-” means the test says you are negative. Suppose P(disease) = 1%, & the test is 95% accurate: [ P(+ | disease) = 95%, P(- | no disease) = 95% ]. Then what is P(disease | +)? Using Bayes’ rule, P(disease | +) =. P(+ | disease) * P(disease). P(+ | disease)P(disease) + P(+ | no disease) P(no disease) =. 95% * 1%. 95% * 1% + 5% * 99% = 16.1%.

11 Bayes’ rule example. Suppose P(Booth has the nuts) = 1%, and P(Booth has a horrible hand) = 10%. Suppose that P(huge bet | nuts) = 100%, and P(huge bet | horrendous hand) = 30%. What is P(nuts | huge bet)? P(nuts | huge bet) = P(huge bet | nuts) * P(nuts) ------------------------------------------------------------------------------------ P(huge bet | nuts) P(nuts) + P(huge bet | horrible hand) P(horrible hand) = 100% * 1% --------------------------------------- 100% * 1% + 30% * 10% = 25%.

12 Variance, CLT, and prop bets. Central Limit Theorem (CLT): if X 1, X 2 …, X n are iid with mean µ& SD  then (X - µ) ÷ (  /√n) ---> Standard Normal. (mean 0, SD 1). In other words, X has mean µ and a standard deviation of  ÷√n. As n increases, (  ÷ √n) decreases. So, the more independent trials, the smaller the SD (and variance) of X. i.e. additional bets decrease the variance of your average. If X and Y are independent, then E(X+Y) = E(X) + E(Y), and V(X+Y) = V(X) + V(Y). Let X = your profit on wager #1, Y = profit on wager #2. If the two wagers are independent, then V(total profit) = V(X) + V(Y) > V(X). So, additional bets increase the variance of your total!

13 CLT and pairs. Central Limit Theorem (CLT): if X 1, X 2 …, X n are iid with mean µ& SD  then (X - µ) ÷ (  /√n) ---> Standard Normal. (mean 0, SD 1). In other words, X has mean µ and a standard deviation of  ÷√n. Two interesting things about this: (i) As n --> ∞. X --> normal. e.g. average number of pairs per hand, out of n hands. µ = p = P(pair) = 3/51 = 5.88%.  = √(pq) = √(5.88% x 94.12%) = 23.525% (ii)About 95% of the time, a std normal random variable is within -1.96 to +1.96. So 95% of the time, (X - µ) ÷ (  /√n) is within -1/96 to +1.96. So 95% of the time, (X - µ) is within -1.96 (  /√n) to +1.96 (  /√n). So 95% of the time, X is within µ - 1.96 (  /√n) to µ + 1.96 (  /√n). That is, 95% of the time, X is in the interval µ +/- 1.96 (  /√n). = 5.88% +/- 1.96(23.525%/√n). For n = 1000, this is 5.88% +/- 1.458%. For n = 1,000,000 get 5.88% +/- 0.0461%.

14 Another CLT Example Central Limit Theorem (CLT): if X 1, X 2 …, X n are iid with mean µ& SD  then with 95% probability, X is in the interval µ +/- 1.96 (  /√n). Q.Suppose you average $5 profit per hour, with a SD of $60 per hour. If you play 1600 hours, let Y be your average profit over those 1600 hours. What is range where Y is 95% likely to fall? A.We want µ +/- 1.96 (  /√n), where µ = $5,  = $60, and n=1600. So the answer is $5 +/- 1.96 x $60 / √(1600) = $5 +/- $2.94, or the range [$2.06, $7.94].


Download ppt "Stat 35b: Introduction to Probability with Applications to Poker Outline for the day: 1.Project B example, again 2.Booth vs. Ivey 3.Bayes Rule examples."

Similar presentations


Ads by Google