Doyle Brunson (one of the most successful poker players ever) and Bill Gates (one of the most successful industrialists ever and a poker enthusiast) sit down to play a poker match. Each one of them buys in for $1,000,000. When one player loses his $1,000,000, the winner takes $1,000,000 off the table, and the loser buys in for another $1,000,000. They then play another match. This continues until one player having just lost another buyin finds himself with no more money with which to buy in again and is declared busted and the match is complete. The question is who is the favorite to bust whom? We assume that while Doyle is no pauper, Bill has a much, much larger bankroll. For given bankrolls, these are the edge differences that result in one player being the favorite.
note: all bankrolls are expressed in units of $1,000,000, so bill_br = 50k means we assume Bill is starting out with $50,000,000,000 (50 billion dollars).
bill_br = 50k doyle_br necessary edge(%) 20 51 19 51 18 51ish 17 51ish 16 51+ 16 51+ 14 52 13 52 12 52 11 52 10 52 9 52 8 53 7 53 6 53 5 54 4 54ish 3 56 2 59 1 66So if Bill has fifty billion dollars, and Doyle has just 19 or 20 million dollars, Doyle is the favorite to break Bill even if his edge in the match is only 51:49. At an edge of 54:46, he only needs five million dollars to be the favorite to break Bill. I leave it as an exercise to the reader to demonstrate that for a bankroll ratio of 1:100000000000, Doyle needs a 2:1 edge to be breakeven to win the match.
For initial conditions: total matches = 1000, bill_br = 50000, doyle_br = 20 p(D:game) Doyle wins Bill Wins --------+---------------+-------------- 51 552 448 52 817 183 53 918 82 54 965 35 55 983 17 56 989 11 57 995 5 58 999 1 59 999 1 60 1000 0 61 998 2 62 1000 0 63 1000 0 64 1000 0 65 1000 0 66 1000 0 67 1000 0 68 1000 0 69 1000 0 70 1000 0 71 1000 0 72 1000 0 73 1000 0 74 1000 0 75 1000 0 76 1000 0 77 1000 0 78 1000 0 79 1000 0 80 1000 0 Note: This means that if Doyle has 20 million dollars and a 2:1 edge in each match, Bill has just about no chance in hell of not getting broke. For initial conditions: total matches = 1000, bill_br = 50000, doyle_br = 19 p(D:game) Doyle wins Bill Wins --------+---------------+-------------- 51 522 478 52 785 215 53 899 101 54 951 49 55 983 17 56 987 13 57 997 3 58 998 2 59 998 2 60 999 1 61 999 1 62 999 1 63 1000 0 64 1000 0 65 1000 0 66 1000 0 67 1000 0 68 1000 0 69 1000 0 70 1000 0 71 1000 0 72 1000 0 73 1000 0 74 1000 0 75 1000 0 76 1000 0 77 1000 0 78 1000 0 79 1000 0 80 1000 0 For initial conditions: total matches = 1000, bill_br = 50000, doyle_br = 18 p(D:game) Doyle wins Bill Wins --------+---------------+-------------- 51 492 508 52 756 244 53 880 120 54 949 51 55 975 25 56 990 10 57 994 6 58 997 3 59 1000 0 60 999 1 61 1000 0 62 1000 0 63 1000 0 64 1000 0 65 1000 0 66 1000 0 67 1000 0 68 1000 0 69 1000 0 70 1000 0 71 1000 0 72 1000 0 73 1000 0 74 1000 0 75 1000 0 76 1000 0 77 1000 0 78 1000 0 79 1000 0 80 1000 0 For initial conditions: total matches = 1000, bill_br = 50000, doyle_br = 17 p(D:game) Doyle wins Bill Wins --------+---------------+-------------- 51 502 498 52 738 262 53 866 134 54 947 53 55 961 39 56 984 16 57 992 8 58 998 2 59 996 4 60 1000 0 61 998 2 62 1000 0 63 1000 0 64 1000 0 65 1000 0 66 1000 0 67 1000 0 68 1000 0 69 1000 0 70 1000 0 71 1000 0 72 1000 0 73 1000 0 74 1000 0 75 1000 0 76 1000 0 77 1000 0 78 1000 0 79 1000 0 80 1000 0 For initial conditions: total matches = 1000, bill_br = 50000, doyle_br = 16 p(D:game) Doyle wins Bill Wins --------+---------------+-------------- 51 486 514 52 712 288 53 876 124 54 916 84 55 968 32 56 983 17 57 990 10 58 996 4 59 997 3 60 997 3 61 1000 0 62 1000 0 63 1000 0 64 1000 0 65 1000 0 66 1000 0 67 1000 0 68 1000 0 69 1000 0 70 1000 0 71 1000 0 72 1000 0 73 1000 0 74 1000 0 75 1000 0 76 1000 0 77 1000 0 78 1000 0 79 1000 0 80 1000 0 For initial conditions: total matches = 1000, bill_br = 50000, doyle_br = 15 p(D:game) Doyle wins Bill Wins --------+---------------+-------------- 51 466 534 52 687 313 53 831 169 54 904 96 55 955 45 56 976 24 57 985 15 58 994 6 59 995 5 60 999 1 61 999 1 62 999 1 63 999 1 64 1000 0 65 1000 0 66 1000 0 67 1000 0 68 1000 0 69 1000 0 70 1000 0 71 1000 0 72 1000 0 73 1000 0 74 1000 0 75 1000 0 76 1000 0 77 1000 0 78 1000 0 79 1000 0 80 1000 0 For initial conditions: total matches = 1000, bill_br = 50000, doyle_br = 14 p(D:game) Doyle wins Bill Wins --------+---------------+-------------- 51 432 568 52 678 322 53 821 179 54 915 85 55 936 64 56 970 30 57 976 24 58 993 7 59 995 5 60 997 3 61 999 1 62 999 1 63 998 2 64 1000 0 65 1000 0 66 1000 0 67 1000 0 68 1000 0 69 1000 0 70 1000 0 71 1000 0 72 1000 0 73 1000 0 74 1000 0 75 1000 0 76 1000 0 77 1000 0 78 1000 0 79 1000 0 80 1000 0 For initial conditions: total matches = 1000, bill_br = 50000, doyle_br = 13 p(D:game) Doyle wins Bill Wins --------+---------------+-------------- 51 416 584 52 640 360 53 756 244 54 865 135 55 932 68 56 963 37 57 972 28 58 981 19 59 997 3 60 993 7 61 996 4 62 997 3 63 999 1 64 1000 0 65 999 1 66 1000 0 67 1000 0 68 1000 0 69 1000 0 70 1000 0 71 1000 0 72 1000 0 73 1000 0 74 1000 0 75 1000 0 76 1000 0 77 1000 0 78 1000 0 79 1000 0 80 1000 0 For initial conditions: total matches = 1000, bill_br = 50000, doyle_br = 12 p(D:game) Doyle wins Bill Wins --------+---------------+-------------- 51 356 644 52 607 393 53 766 234 54 841 159 55 897 103 56 949 51 57 967 33 58 988 12 59 987 13 60 990 10 61 995 5 62 996 4 63 1000 0 64 999 1 65 1000 0 66 1000 0 67 1000 0 68 1000 0 69 1000 0 70 1000 0 71 1000 0 72 1000 0 73 1000 0 74 1000 0 75 1000 0 76 1000 0 77 1000 0 78 1000 0 79 1000 0 80 1000 0 For initial conditions: total matches = 1000, bill_br = 50000, doyle_br = 11 p(D:game) Doyle wins Bill Wins --------+---------------+-------------- 51 379 621 52 584 416 53 726 274 54 828 172 55 906 94 56 932 68 57 958 42 58 968 32 59 966 34 60 993 7 61 992 8 62 999 1 63 997 3 64 1000 0 65 999 1 66 1000 0 67 999 1 68 1000 0 69 1000 0 70 1000 0 71 1000 0 72 1000 0 73 1000 0 74 1000 0 75 1000 0 76 1000 0 77 1000 0 78 1000 0 79 1000 0 80 1000 0 For initial conditions: total matches = 1000, bill_br = 50000, doyle_br = 10 p(D:game) Doyle wins Bill Wins --------+---------------+-------------- 51 332 668 52 550 450 53 690 310 54 794 206 55 863 137 56 913 87 57 939 61 58 961 39 59 976 24 60 972 28 61 996 4 62 990 10 63 996 4 64 1000 0 65 999 1 66 997 3 67 1000 0 68 999 1 69 1000 0 70 1000 0 71 1000 0 72 1000 0 73 1000 0 74 1000 0 75 1000 0 76 1000 0 77 1000 0 78 1000 0 79 1000 0 80 1000 0 For initial conditions: total matches = 1000, bill_br = 50000, doyle_br = 9 p(D:game) Doyle wins Bill Wins --------+---------------+-------------- 51 295 705 52 519 481 53 646 354 54 740 260 55 837 163 56 885 115 57 940 60 58 942 58 59 966 34 60 976 24 61 981 19 62 990 10 63 994 6 64 997 3 65 994 6 66 996 4 67 998 2 68 998 2 69 1000 0 70 1000 0 71 999 1 72 1000 0 73 1000 0 74 1000 0 75 1000 0 76 1000 0 77 1000 0 78 1000 0 79 1000 0 80 1000 0 For initial conditions: total matches = 1000, bill_br = 50000, doyle_br = 8 p(D:game) Doyle wins Bill Wins --------+---------------+-------------- 51 253 747 52 450 550 53 600 400 54 740 260 55 802 198 56 852 148 57 877 123 58 929 71 59 947 53 60 966 34 61 973 27 62 975 25 63 986 14 64 990 10 65 993 7 66 991 9 67 998 2 68 998 2 69 999 1 70 998 2 71 999 1 72 1000 0 73 1000 0 74 1000 0 75 1000 0 76 1000 0 77 1000 0 78 1000 0 79 1000 0 80 1000 0 For initial conditions: total matches = 1000, bill_br = 50000, doyle_br = 7 p(D:game) Doyle wins Bill Wins --------+---------------+-------------- 51 238 762 52 443 557 53 605 395 54 698 302 55 751 249 56 842 158 57 872 128 58 892 108 59 913 87 60 943 57 61 948 52 62 977 23 63 985 15 64 981 19 65 989 11 66 991 9 67 994 6 68 998 2 69 997 3 70 998 2 71 998 2 72 997 3 73 998 2 74 997 3 75 999 1 76 1000 0 77 1000 0 78 1000 0 79 1000 0 80 1000 0 For initial conditions: total matches = 1000, bill_br = 50000, doyle_br = 6 p(D:game) Doyle wins Bill Wins --------+---------------+-------------- 51 194 806 52 380 620 53 509 491 54 618 382 55 697 303 56 781 219 57 811 189 58 847 153 59 902 98 60 909 91 61 922 78 62 941 59 63 965 35 64 964 36 65 977 23 66 975 25 67 986 14 68 988 12 69 990 10 70 994 6 71 995 5 72 996 4 73 998 2 74 998 2 75 999 1 76 997 3 77 1000 0 78 998 2 79 999 1 80 1000 0 For initial conditions: total matches = 1000, bill_br = 50000, doyle_br = 5 p(D:game) Doyle wins Bill Wins --------+---------------+-------------- 51 174 826 52 340 660 53 478 522 54 548 452 55 632 368 56 702 298 57 733 267 58 800 200 59 850 150 60 847 153 61 914 86 62 897 103 63 937 63 64 939 61 65 950 50 66 954 46 67 975 25 68 979 21 69 989 11 70 995 5 71 989 11 72 988 12 73 993 7 74 994 6 75 995 5 76 999 1 77 1000 0 78 999 1 79 999 1 80 1000 0 For initial conditions: total matches = 1000, bill_br = 50000, doyle_br = 4 p(D:game) Doyle wins Bill Wins --------+---------------+-------------- 51 135 865 52 285 715 53 380 620 54 501 499 55 550 450 56 649 351 57 688 312 58 723 277 59 752 248 60 790 210 61 822 178 62 861 139 63 877 123 64 902 98 65 923 77 66 941 59 67 933 67 68 948 52 69 964 36 70 967 33 71 976 24 72 967 33 73 982 18 74 981 19 75 987 13 76 991 9 77 992 8 78 995 5 79 996 4 80 999 1 For initial conditions: total matches = 1000, bill_br = 50000, doyle_br = 3 p(D:game) Doyle wins Bill Wins --------+---------------+-------------- 51 123 877 52 223 777 53 285 715 54 358 642 55 450 550 56 534 466 57 589 411 58 598 402 59 648 352 60 713 287 61 729 271 62 792 208 63 795 205 64 816 184 65 855 145 66 867 133 67 877 123 68 908 92 69 911 89 70 924 76 71 924 76 72 936 64 73 949 51 74 958 42 75 961 39 76 972 28 77 968 32 78 972 28 79 985 15 80 986 14 For initial conditions: total matches = 1000, bill_br = 50000, doyle_br = 2 p(D:game) Doyle wins Bill Wins --------+---------------+-------------- 51 82 918 52 157 843 53 210 790 54 290 710 55 323 677 56 376 624 57 431 569 58 456 544 59 525 475 60 553 447 61 583 417 62 626 374 63 656 344 64 690 310 65 694 306 66 750 250 67 760 240 68 773 227 69 827 173 70 798 202 71 853 147 72 857 143 73 851 149 74 879 121 75 889 111 76 916 84 77 900 100 78 914 86 79 933 67 80 947 53 For initial conditions: total matches = 1000, bill_br = 50000, doyle_br = 1 p(D:game) Doyle wins Bill Wins --------+---------------+-------------- 51 55 945 52 86 914 53 119 881 54 149 851 55 177 823 56 231 769 57 258 742 58 268 732 59 286 714 60 361 639 61 380 620 62 388 612 63 393 607 64 431 569 65 467 533 66 502 498 67 493 507 68 543 457 69 562 438 70 583 417 71 571 429 72 614 386 73 633 367 74 658 342 75 672 328 76 705 295 77 716 284 78 709 291 79 725 275 80 733 267
The Brunson/Gates problem is eminently solvable in non-simulation fashion (and a standard probability exercise I would guess). Let P(A,B,p)= the probability that a player that has A units busts a player who has B units, which the A-unit player winning the 1-unit match probability p of the time. The recursion formula is thus P(A,B,p)=p*P(A+1,B-1,p)+(1-p)*P(A-1,B+1,p) The boundary conditions are P(A+B,0,p)=1 and P(0,A+B,p)=0. One can now compute any probability exactly if desired. When p is 1/2, the probability reduces nicely to A/(A+B). As a related exercise, you can determine the expected length of the match (I recall it to be like A times B when p is 1/2).
Here's the PARI code (built-in arbitraryprecision prog) and some output.
{
Doyle(X,p)=local(A,B);
A=vector(X-1);B=vector(X-1);
A[X-1]=1-p;B[X-1]=p;
forstep(i=X-2,1,-1,A[i]=(1-p)/(1-p*A[i+1]);B[i]=p*B[i+1]/(1-p*A[i+1]));
P=vector(X-1);
/* P(n)=A[n]*P(n-1)+B[n], where P(n) is the prob of win with n of the X */
P[1]=B[1];
for(i=2,X-1,P[i]=A[i]*P[i-1]+B[i]);
return(P);
}
X is the total number of units in the game.
P[i] is the probability that the p-probability player
wins when having i units to start.
? Doyle(10,1/2)
[1/10, 1/5, 3/10, 2/5, 1/2, 3/5, 7/10, 4/5, 9/10]
? Doyle(20,3/5)
[1162261467/3485735825, 387420489/697147165, 2453663097/3485735825, 43046721/53626705, 14348907/16520075, 636134877/697147165, 3282711057/3485735825, 51549777/53626705, 3396085137/3485735825, 59049/60073, 3446473617/3485735825, 53229393/53626705, 3468868497/3485735825, 694968093/697147165, 16487307/16520075, 53561169/53626705, 3483245457/3485735825, 696885021/697147165, 3485211537/3485735825]
? precision(1.0*Doyle(20,3/5),8)
[0.333433606, 0.555722677, 0.703915391, 0.802710533, 0.868573962, 0.912482914, 0.941755549, 0.961270639, 0.974280699, 0.982954072, 0.988736321, 0.992591153, 0.995161042, 0.996874301, 0.998016473, 0.998777922, 0.999285554, 0.999623975, 0.999849590]
? Doyle(50020,0.5)[20] /* Chance Doyle wins 20 to 50000 at 50-50 odds */
0.0003998400639744102359045867151
? Doyle(50020,0.51)[20] /* Chance Doyle wins 20 to 50000 at 51-49 odds */
0.5507189732544075360036931938
? Doyle(50020,0.52)[20] /* Chance Doyle wins 20 to 50000 at 52-48 odds */
0.7982758589882384159928701283
Now one can write an iterative root-finder to see when Doyle() is about 1/2.
{
Iterate(A,B,S)=local(F,G);
F=Doyle(50000+S,A)[S];G=Doyle(50000+S,B)[S];
while(abs(F-.5)>10^(-10) && abs(G-.5)>10^(-10),
if(abs(F-1/2)>abs(G-1/2),
A=(B*(F-1/2)-A*(G-1/2))/(F-G);F=Doyle(50000+S,A)[S],
B=(B*(F-1/2)-A*(G-1/2))/(F-G);G=Doyle(50000+S,B)[S]));
/* Was in a rush or would use Brent's golden mean algorithm */
if(abs(F-1/2)>abs(G-1/2),return([B,G]),return([A,F]));
}
? Iterate(.5,.51,20)
[0.5086634726094520023086142527, 0.4999999999997923448311191908]
? Iterate(.5,.51,19)
[0.5091193462538567416747730718, 0.4999999999999953706119062598]
? Iterate(.5,.52,18)
[0.5096258547051513185778816070, 0.5000000000000027588452188420]
? Iterate(.5,.52,17)
[0.5101919289507634758417339509, 0.5000000000000001982261141331]
? Iterate(.5,.52,16)
[0.5108287311641290069525241667, 0.5000000000325227938629964655]
? Iterate(.5,.52,15)
[0.5115503977406109464531141258, 0.5000000000041063022232170517]
? Iterate(.5,.52,14)
[0.5123751004133301282601060338, 0.5000000000003722560686042830]
? Iterate(.5,.52,13)
[0.5133265964209963408676624705, 0.5000000000000211379361255616]
? Iterate(.5,.52,12)
[0.5144365525466710294744408558, 0.5000000000000005883792741651]
? Iterate(.5,.52,11)
[0.5157481344484590584972177190, 0.4999999999798614582127251280]
? Iterate(.5,.52,10)
[0.5173217448321748671906578515, 0.4999999999997920523155868484]
? Iterate(.5,.52,9)
[0.5192445768259652603143311738, 0.5000000000134948602657460908]
? Iterate(.52,.53,8)
[0.5216473087517141031410957374, 0.5000000000323729013358094308]
? Iterate(.52,.53,7)
[0.5247350488174022923686845179, 0.4999999999999988495252864894]
? Iterate(.52,.53,6)
[0.5288490548999701414078841903, 0.5000000000005314685527132379]
? Iterate(.53,.54,5)
[0.5346019613837415383691483054, 0.5000000000299235212431301154]
? Iterate(.53,.54,4)
[0.5432136168616484577210345681, 0.4999999999895504388534313912]
? Iterate(.55,.56,3)
[0.5575066659755672447297820909, 0.5000000000000568402340788917]
? Iterate(.57,.58,2)
[0.5857864376266526251596361595, 0.4999999999989600835635961384]
? Iterate(.5,.51,1)
[0.6666666666665996799680183861, 0.4999999999998492799280404075]
===
Last Modified 5/22/01