日期:2014-05-20 浏览次数:21052 次
import java.util.Random;
/*
* 想产生三张牌,可是有时候这个产生的随机数会导致产生两个一模一样的牌,
* 如红桃A,红桃A,红桃3;不能有两个红桃A,怎么改?
*
* 用随机数洗牌而不是产生牌
* 获取洗完牌的前3张
*/
public class Test {
public static void main(String[] args) {
//获取洗好的扑克牌
String[] pukes = Puke.getRandomPuke();
//获取前3张牌
final int count = 3;
System.out.println("随机获取3张扑克牌");
for(int i = 0;i < count;i++){
System.out.print(pukes[i] + ",");
}
System.out.println();
}
}
class Puke{
//扑克牌
private static String[] pukes;
//花色
private final static String[] flowers = new String[]{"红桃","方片","梅花","黑桃"};
//大小
private final static String[] values = new String[]{"A","2","3","4","5","6","7","8","9","10",
"J","Q","K"
};
/*随机产生一副牌*/
public static String[] getRandomPuke(){
final int total = 52;
if(pukes == null){
pukes = new String[total];
for(int i = 0;i < flowers.length;i++){
for(int j = 0;j < values.length;j++){
pukes[values.length * i + j] = flowers[i] + values[j];
}
}
}
//洗牌
Random r = new Random();
for(int i = 0;i < pukes.length;i++){
int index = r.nextInt(total);
String temp = pukes[index];
pukes[index] = pukes[i];
pukes[i] = temp;
}
return pukes;
}
}