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模擬程式範例如下,由命令提示字元輸入5個1到39不重覆的539號碼,試試您的手氣!重複號碼、號碼數不足或號碼超出範圍皆會被檔下。
class Lottery539
{
public static void main(String[] args)
{
if (args.length < 5)
{
System.out.println("請輸入5個1到39不重覆的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]+"超出範圍!請重新輸入5個1到39的539號碼");
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("請重新輸入5個1到39不重覆的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
請輸入5個1到39不重覆的539號碼
C:\js>java Lottery539 12 13 14 15 40
40超出範圍!請重新輸入5個1到39的539號碼
C:\js>java Lottery539 21 21 33 34 39
請重新輸入5個1到39不重覆的539號碼
C:\js>java Lottery539 1 3 5 7 9
開出獎號:7 18 5 8 33
您的號碼:1 3 5 7 9
您中2個號碼
留言列表