今天晚上做了一个扑克牌的小程序,其中有个洗牌的过程,用了一个随机生成不重复随机数做的
怎么生成,如下
import java.util.Random;
public class RandomNum {
/**
* 生成不重复的随机数
*
* @param Wang Yanming
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Random r = new Random();
int a[] = new int[21];// 生成[0,20]的随机数
boolean b[] = new boolean[21];//
int k = 0;
for (int i = 0; i < 21; i++)
{
do {
k = r.nextInt(21);// 从0到21的数,不包括21,即[0,21)
} while (b[k]);
// 当b[k]为真说明有这个K值 ,继续返回循环,直到b[k]为假,跳出循环,得到数
b[k] = true;
// 跳出循环后设b[k]为真,相当于“把k值加入b[]中”,
// 不是真的加入k的值,b是Boolean型的
a[i] = k;// 赋值
}
// 遍历
for (int i = 0; i < 21; i++) {
System.out.print(a[i] + " ");
}
// 增强型for遍历
System.out.println("\n*******增强型for遍历*********");
for (int i : a) {
System.out.print(i + " ");
}
}
}
要真是扑克牌的话,就生成54个随机数,然后把牌按照这个顺序排就好了,比如第一个随机数是9,就把相应花色的9放在第一位置