You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java中如何从二维String类型数组中随机选取元素

随机抽取扑克牌功能实现方案

核心思路

你的二维牌组数组第一维对应4种花色,第二维对应每种花色的13张卡牌,只要分别生成两个维度的合法随机下标,就能取出随机卡牌:

  • 第一维下标范围:0 ~ 3(对应数组长度4,取下界不取上界的随机方法直接传数组长度即可)
  • 第二维下标范围:0 ~ 12(对应每个子数组长度13,同理直接传子数组长度即可)

基础实现代码(单次抽牌)

import java.util.Random;

public class RandomCardDemo {
    public static void main(String[] args) {
        // 你定义的牌组数组
        String[][] cardDeck = {
                {"AceH", "2H", "3H", "4H", "5H", "6H", "7H", "8H", "9H", "10H", "JackH", "QueenH", "KingH"},
                {"AceD", "2D", "3D", "4D", "5D", "6D", "7D", "8D", "9D", "10D", "JackD", "QueenD", "KingD"},
                {"AceS", "2S", "3S", "4S", "5S", "6S", "7S", "8S", "9S", "10S", "JackS", "QueenS", "KingS"},
                {"AceC", "2C", "3C", "4C", "5C", "6C", "7C", "8C", "9C", "10C", "JackC", "QueenC", "KingC"}
        };

        // 初始化随机数生成器
        Random random = new Random();
        // 生成随机花色下标
        int suitIndex = random.nextInt(cardDeck.length);
        // 生成对应花色下的随机卡牌下标
        int cardIndex = random.nextInt(cardDeck[suitIndex].length);
        // 取出随机卡牌
        String randomCard = cardDeck[suitIndex][cardIndex];

        System.out.println("抽到的卡牌是:" + randomCard);
    }
}

扩展场景:多次抽牌不重复(适合发牌)

如果需要抽多张牌且不会抽到重复卡牌,可以先把二维数组转成一维List,调用Collections.shuffle()打乱顺序后,按顺序取元素即可:

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class NonDuplicateRandomCard {
    public static void main(String[] args) {
        String[][] cardDeck = {
                {"AceH", "2H", "3H", "4H", "5H", "6H", "7H", "8H", "9H", "10H", "JackH", "QueenH", "KingH"},
                {"AceD", "2D", "3D", "4D", "5D", "6D", "7D", "8D", "9D", "10D", "JackD", "QueenD", "KingD"},
                {"AceS", "2S", "3S", "4S", "5S", "6S", "7S", "8S", "9S", "10S", "JackS", "QueenS", "KingS"},
                {"AceC", "2C", "3C", "4C", "5C", "6C", "7C", "8C", "9C", "10C", "JackC", "QueenC", "KingC"}
        };

        // 二维数组转一维List
        List<String> cardList = new ArrayList<>();
        for (String[] suit : cardDeck) {
            Collections.addAll(cardList, suit);
        }
        // 打乱牌组顺序
        Collections.shuffle(cardList);

        // 示例:连续抽5张不重复的牌
        for (int i = 0; i < 5; i++) {
            System.out.println("第" + (i+1) + "张牌:" + cardList.get(i));
        }
    }
}

内容的提问来源于stack exchange,提问作者Hi I'm Justin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 18:54:03