问题:编写一个函数模拟斗地主游戏,将54张牌随机的发给三位玩家,最后剩余3张底牌。
解答:
(1)使用随机函数,随机生成54个数,生成的随机数如果存在,则重新随机生成,函数如下:
public void run(int b, ArrayList<Integer> list){
int num = (int) (Math.random()*b);
boolean flag = false;
list.add(num);
while(list.size()<b){
num = (int) (Math.random()*b)+1;
for(int a:list){
if(num==a){
flag = true;
break;
}
flag = false;
}
if(flag == false){
list.add(num);
}
}
}
(2)先定义一个数组存放1-54的数字,通过随机函数生成一个随机数,与当前遍历数组下标的元素交换。(也可以遍历一半,即while(j < a.length/2 ))
public void run(Integer[] a){
int j = 0;
int num,temp;
while(j<a.length){
num = (int)(Math.random()*a.length);
temp = a[j];
a[j] = a[num];
a[num] = temp;
j++;
}
}