[Introduction to programming in Java 笔记] 1.3.8 Gambler's ruin simulation 赌徒破产模拟

赌徒赢得机会有多大?

public class Gambler
{
    public static void main(String[] args)
    {  // Run T experiments that start with $stake and terminate on $0 and $goal
       int stake = Integer.parseInt(args[0]);
       int goal  = Integer.parseInt(args[1]);
       int T     = Integer.parseInt(args[2]);
       int bets = 0;
       int wins = 0;
       for (int t = 0; t < T; t++)
       {   // Run one experiment
           int cash = stake;
           while(cash > 0 && cash < goal)
           {   // Simulate one bet.
               bets++;
               if (Math.random() < 0.5) cash++;
               else                     cash--;
           } // Cash is either 0 (ruin) or $goal (win)
           if (cash == goal) wins++;
       }
       System.out.println(100*wins/T + "% wins");
       System.out.println("Avg # bets: " + bets/T);
    }
}

运行结果


 

 

posted @ 2016-02-19 22:17  hopskin1  阅读(553)  评论(0编辑  收藏  举报