Java扑克牌(洗牌Collections.shuffle)
【摘要】
Java.util.Collections类下有一个静态的shuffle()方法,如下:
1)static void shuffle(List<?> list) 使用默认随机源对列表进行置换,所有置换发生的可能性都是大致相等的。
2)static void shuffle(List<?> list...
Java.util.Collections类下有一个静态的shuffle()方法,如下:
1)static void shuffle(List<?> list) 使用默认随机源对列表进行置换,所有置换发生的可能性都是大致相等的。
2)static void shuffle(List<?> list, Random rand) 使用指定的随机源对指定列表进行置换,所有置换发生的可能性都是大致相等的,假定随机源是公平的。
通俗一点的说,就像洗牌一样,随机打乱原来的顺序。
注意:如果给定一个整型数组,用Arrays.asList()方法将其转化为一个集合类,有两种途径:
1)用List<Integer> list=ArrayList(Arrays.asList(ia)),用shuffle()打乱不会改变底层数组的顺序。
2)用List<Integer> list=Arrays.aslist(ia),然后用shuffle()打乱会改变底层数组的顺序。代码例子如下:
-
package com.item.test;
-
import java.util.*;
-
-
public class T1 {
-
public static void main(String[] args){
-
Random rand=new Random(54);
-
Integer[] ia={0,1,2,3,4,5,6,7,8,9};
-
List<Integer> list=new ArrayList<Integer>(Arrays.asList(ia));
-
System.out.println("前 shufflig: "+list);
-
Collections.shuffle(list,rand);
-
System.out.println("后 shuffling: "+list);
-
System.out.println("数组: "+Arrays.toString(ia));
-
List<Integer> list1=Arrays.asList(ia);
-
System.out.println("前 shuffling: "+list1);
-
Collections.shuffle(list1,rand);
-
System.out.println("后 shuffling: "+list1);
-
System.out.println("数组: "+Arrays.toString(ia));
-
}
-
}
效果:
所以接上一篇文章:【Java扑克牌(enum)】
-
package com.item.test;
-
-
import java.util.ArrayList;
-
import java.util.Collection;
-
import java.util.Collections;
-
import java.util.List;
-
-
public class Action {
-
public static void main(String[] args) {
-
//随机卡牌
-
List<Card> list=ResetCard(StartCard());
-
int i=0;
-
for (Card c:list) {
-
if(i%3==0){
-
System.out.println();
-
}
-
System.out.print(c.getIndex()+":"+c.getName()+"\t");
-
i++;
-
}
-
}
-
-
/**
-
* 随机排序
-
* @param list
-
* @return
-
*/
-
public static List<Card> ResetCard(List<Card> list){
-
Collections.shuffle(list);
-
return list;
-
}
-
-
/**
-
* 初始化卡牌
-
* @return
-
*/
-
public static List<Card> StartCard(){
-
List<Card> list=new ArrayList<>(54);
-
int i=0;
-
for (CardsEnum cardsEnum:CardsEnum.values()) {
-
for (CardColorEnum cardColorEnum:CardColorEnum.values()) {
-
list.add(new Card(cardsEnum,cardColorEnum,i++));
-
}
-
}
-
Card big=new Card();
-
big.setName(CardBossEnum.BIG.getName());
-
big.setIndex(i++);
-
Card small=new Card();
-
small.setName(CardBossEnum.SMALL.getName());
-
small.setIndex(i++);
-
list.add(big);
-
list.add(small);
-
return list;
-
}
-
}
效果如下:
上篇文章地址:【https://blog.csdn.net/feng8403000/article/details/114792614】
文章来源: laoshifu.blog.csdn.net,作者:红目香薰,版权归原作者所有,如需转载,请联系作者。
原文链接:laoshifu.blog.csdn.net/article/details/114793908
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)