java - 洗牌算法

标签 java

我有以下java代码,它应该“洗牌”一副牌中的牌。牌组是一个包含卡片对象的数组列表。

private void ShuffleDeck() {
    //Number of cards in deck
    int deckSize = deck.size();

    //Swapping 100 cards
    for(int i = 0; i < 15; i++) {

        //Generating two random card indexes
        int indexA = (int) ((Math.random() * deckSize-1));
        int indexB = (int) (Math.random() * deckSize-1);
        System.out.println(indexA + " " + indexB);

        //Getting objects
        Card cardA = deck.get(indexA);
        Card cardB = deck.get(indexB);

        //Temporaily removing these cards from deck
        deck.remove(cardA);
        deck.remove(cardB);

        //Swapping around the two cards
        deck.add(indexA, cardB);
        deck.add(indexB, cardA);

    }

}

但是,当我运行此方法时,一些卡片似乎从牌组中“消失”...关于为什么会这样的任何建议吗? :)

最佳答案

假设deckList<Card> (包括 ArrayList 等):

public void shuffleDeck() { // please use camelCase method names
    Collections.shuffle(deck);
}

不要重新发明轮子。

关于java - 洗牌算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16500477/

相关文章:

java - Struts 2扩展更改,外部链接时重定向.action

java - react 流 : Spring WebFlux - subscribe to existing publisher

java - 如何在 Java 中通过焦点应用程序自动按键

java - 不带消息头的 MQMessage

javascript - 从 Java 8 Nashorn 引擎运行 "Graphviz"viz.js

java - 尝试安装 Hadoop 单节点集群时获取 java 执行错误

java - 请求有关在 Android 中创建自定义 SeekBar 的指导。 (如图所示)

java - 将 Springboot 从 2.1.0 迁移到 2.2.1 时出现 Mongo 错误

java - 从 float 中删除数字标记并转换为整数

java - instanceof 似乎不起作用 - 我的代码有什么问题?