Advertisement
Guest User

Untitled

a guest
Apr 23rd, 2014
45
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.32 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4. #include <windows.h>
  5.  
  6. int FlipCoins(double dStartingBankroll, double dEdge)
  7. {
  8.     double dBankroll(dStartingBankroll);
  9.  
  10.     int iHeads = 0;
  11.     int iTails = 0;
  12.     while (true)
  13.     {
  14.         int iFlip = (rand() % 2);
  15.         if (iFlip == 0)
  16.         {
  17.             dBankroll += 1.0 + dEdge;
  18.             ++iHeads;
  19.         }
  20.         else
  21.         {
  22.             dBankroll -= 1.0;
  23.             ++iTails;
  24.         }
  25.  
  26.         //if ((iHeads + iTails) % 10 == 0 && (iHeads + iTails) > 0)
  27.         //  printf("Flipped %d coins - bankroll $%.2f\n", iHeads + iTails, dBankroll);
  28.  
  29.         if (dBankroll <= 0.0)
  30.         {
  31.             //printf("Broke after %d flips\n", iHeads + iTails);
  32.             return iHeads + iTails;
  33.         }
  34.     }
  35. }
  36.  
  37. void main()
  38. {
  39.     const int iTotalRuns = 10000;
  40.     const double dStartingBankroll = 5;
  41.     const double dEdge = 0.01;
  42.  
  43.     srand((unsigned int)time(NULL));
  44.  
  45.     unsigned long long ullFlips(0);
  46.     for (int i = 0 ; i < iTotalRuns ; ++i)
  47.     {
  48.         ullFlips += FlipCoins(dStartingBankroll, dEdge);
  49.         if (/*(i % 10) == 0 && */i > 0)
  50.             printf("After %d runs - Averaged %.3f flips to go broke from $%.3f with %.3f edge\n", i, static_cast<double>(ullFlips) / static_cast<double>(i), dStartingBankroll, dEdge);
  51.     }
  52.  
  53.     printf("Total - Averaged %.3f flips to go broke from $%.3f with %.3f edge\n", static_cast<double>(ullFlips) / static_cast<double>(iTotalRuns), dStartingBankroll, dEdge);
  54. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement