import java.util.ArrayList;
import java.util.Random;
public class GetRandomList {
public static void main(String[] args) {
// TODO Auto-generated method stub
String[] brand = { "A","2","3","4","5","6","7","8","9","10","J","Q","K"} ;
ArrayList al=new ArrayList();//用ArrayList集合来存储brand里面的元素
for(int i=0;i<brand.length;i++){
al.add(brand[i]);
}
Random rad =new Random(System.currentTimeMillis());//产生随机数
System.out.println(rad);
ArrayList randomArr=new ArrayList();//创建一个新集合来存储随即元素
for(int i=0;i<brand.length;i++){ //疑问1、我将brand.length改为al.size 得出结果长度会少几位?他们的长度应该一样才对啊
int index=rad.nextInt(brand.length-i);//疑问2、 对Random类不是很熟悉,Random()和nextInt()里面放的数会对产生的随机数有什么影响呢?
randomArr.add(al.get(index));
al.remove(index);//去掉集合里已抽取的元素 避免重复
}
System.out.println(randomArr);
}
}
这个程序我想实现类似随机洗牌的功能,通过查资料做出来的,所以有2个地方不太明白,
疑问1、我将brand.length改为al.size 得出结果长度会少几位?他们的长度应该一样才对啊。
疑问2、 对Random类不是很熟悉,Random()和nextInt()里面放的数会对产生的随机数有什么影响呢?
有空的朋友帮忙解答下呗,不胜感激。
|