关于随机的知识:
Math.random() 生成随机数;
Collections.shuffle() 随机打乱数组;
主要说一下
Collections.shuffle() 这个:
public static void main(String[] args) {
List<Integer> list = new ArrayList<>();
for (int i = 0; i < 1000; i++) {
list.add(i);
}
Collections.shuffle(list);
for (int i : list) {
System.out.print(list.get(i) + "\t");
}
}
创建一个0-999的1000个数字的数组,用 Collections.shuffle() 方法打乱,可以输出 数组里1000个随机数。
可以用于发扑克牌等……程序,mark一下。
(以下文章转自简书,作者:smmtest)
发扑克牌:
玩过扑克的都知道,玩扑克的一些顺序,首先要有牌,然后洗牌,然后打乱了后发到所有人手里,每个人牌数一样,这些都是需要注意的特点。首先要创造出52张牌(去掉了大小王),这里通过利用两个list(点数和花式)循环创建一个所有牌的list,然后shuffle一下,最后return card,拿到的牌就是打乱的了。
//创建牌
private ArrayList Card(){
//点数
ArrayList<String> num=new ArrayList<String>();
num.add("A");num.add("2");num.add("3");num.add("4");num.add("5");num.add("6");num.add("7");num.add("8");num.add("9");num.add("10");
num.add("J");num.add("Q");num.add("K");
//花式
ArrayList<String> color=new ArrayList<String>();
color.add("黑桃");color.add("红桃");color.add("方片");color.add("草花");
//所有牌
ArrayList<String> card=new ArrayList<String>();
for (int i=0;i<color.size();i++){
for (int j=0;j<num.size();j++)
{
card.add(color.get(i)+num.get(j));
}
}
//洗牌
Collections.shuffle(card);
return card;
}
然后是发牌方法,定义了发牌人数(写死为4个人),每个人能发到的牌数(循环用)
通过双循环打印出来效果
j的循环是通过i值的变换而变换,当i是1,j就从0循环到12,然后i=2,j=13-25....
@Test
//发牌
private void Deal(){
//人数
int pnum=4;
//每人能发到的牌数
int numperp=52/pnum;
for (int i=1;i<=pnum;i++){
System.out.println("第"+i+"人拿到的:");
//根据i来控制j的初始值
for (int j=(numperp)*(i-1);j<numperp*i;j++){
System.out.print(Card().get(j)+"、");
}
System.out.println();
}
}
结果如下: