Java扑克牌(洗牌Collections.shuffle)

举报
红目香薰 发表于 2022/01/21 23:45:43 2022/01/21
1.3k+ 0 0
【摘要】 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

抱歉,系统识别当前为高风险访问,暂不支持该操作

    全部回复

    上滑加载中

    设置昵称

    在此一键设置昵称,即可参与社区互动!

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。