13   樂透539模擬程式

[13-1亂數產生器]

Java產生亂數有幾種方法,最常用的是 Math.random() 這個method,會回傳一個介於 0.0~1.0 之間正的double數值,但不包含 1.0的值。如要產生一個 1~50 的亂數,該怎樣做呢?因為 Math.random()是回傳0.0~1.0之間的值,所以我們可以把 Math.random() 乘以50後,即會變成 0.0~50.0 的值,因不包含 50,所以再強制轉換成 int 型別後,再加上 1 即可。程式碼如下:

 

(int)(Math.random()*50+1)

 

 

[13-2樂透539模擬程式]

利用之前學過的程式指令,舉一樂透539模擬程式範例如下,由命令提示字元輸入5139不重覆的539號碼,試試您的手氣!重複號碼、號碼數不足或號碼超出範圍皆會被檔下。

 

class Lottery539

   {

   public static void main(String[] args)

   {

     if (args.length < 5)

       {

         System.out.println("請輸入5139不重覆的539號碼");

         System.exit(1);

       }

       

     int[] yournum = new int[5];

     int m = 0;

     int n = 0;

 

     while (m < 5)            

       {

         yournum[m] = Integer.parseInt(args[n]);

          m++;

          n++;

       }

 

     int k;

 

     for (k=0;k<5;k++)

       {

         if (yournum[k]>39 || yournum[k]<1)

           {

             System.out.println(yournum[k]+"超出範圍!請重新輸入5139539號碼");

             System.exit(1);

           }

       }

       

     int i;

     int j;

 

     for (j=1;j<5;j++)

       {

         for(i=0;i<j;i++)

           {

             if (yournum[i]==yournum[j])

               {

                 System.out.println("請重新輸入5139不重覆的539號碼");

                 System.exit(1);

               }

           }

       }

       

 

     int[] num = new int[5];

     int a = 0;

     while (a < 5)

       {

         num[a] = (int)(Math.random() * 39 + 1);

         a++;

       }

 

     int x = 0;

     int y;

     for (y=1;y<5;x=0,y++)

       {

         while(x<y)

           {

             if (num[x]==num[y])

               {

                 num[y]=(int)(Math.random() * 39 + 1);

               }

             else

               {

                  x++;

               }

           }

       }

 

     int[] hit = new int[5];

       int cnt = 0;

       int s;

       int t;

 

       for (s=0;s<5;s++)

           {for (t=0;t<5;t++)  

               {

                 if (yournum[s] == num[t])

                     {

                     hit[cnt] = yournum[s];

                     cnt++;

                     }

               }

           }

 

     System.out.println("開出獎號:"+num[0]+" "+num[1]+" "+num[2]+" "+num[3]+" "+num[4]);

     System.out.println("您的號碼:"+yournum[0]+" "+yournum[1]+" "+yournum[2]+" "+yournum[3]

       +" "+yournum[4]);

     switch (cnt)

       {

         case 2:

             System.out.println("您中2個號碼");

             break;

         case 3:

             System.out.println("您中3個號碼");

             break;

         case 4:

             System.out.println("您中4個號碼");

             break;

         case 5:

             System.out.println("您中5個號碼");

             break;

         default:

             System.out.println("您沒有中獎");

       }

 

   }

}

命令提示字元輸入及結果:

C:\Users\CTC-Mobile>cd C:\js

 

C:\js>javac Lottery539.java

 

C:\js>java Lottery539 12 15 39

請輸入5139不重覆的539號碼

 

C:\js>java Lottery539 12 13 14 15 40

40超出範圍!請重新輸入5139539號碼

 

C:\js>java Lottery539 21 21 33 34 39

請重新輸入5139不重覆的539號碼

 

C:\js>java Lottery539 1 3 5 7 9

開出獎號:7 18 5 8 33

您的號碼:1 3 5 7 9

您中2個號碼

arrow
arrow
    創作者介紹
    創作者 祈泊 的頭像
    祈泊

    祈泊的部落格

    祈泊 發表在 痞客邦 留言(0) 人氣()