java – 正确的逻辑,从卡座中随机选择一张卡,直到选中所有卡
发布时间:2020-12-15 04:17:28 所属栏目:Java 来源:网络整理
导读:我在这里需要一些建议.我想创建一个逻辑,从一副52张牌中随机选择一张牌,直到选中所有牌,如果使用了所有52张牌,我需要重新洗牌并重新开始. 我已经为此创建了一个工作正常的逻辑,但我认为应该有更好的方法来做到这一点.一些MMM – 数学硕士思想可以结束我的痛
我在这里需要一些建议.我想创建一个逻辑,从一副52张牌中随机选择一张牌,直到选中所有牌,如果使用了所有52张牌,我需要重新洗牌并重新开始.
我已经为此创建了一个工作正常的逻辑,但我认为应该有更好的方法来做到这一点.一些MMM – 数学硕士思想可以结束我的痛苦. 这是逻辑: >创建一个空的arraylist来存储所有52张卡以供检查 ArrayList<Integer> list = new ArrayList<Integer>(); int card = -1; do { Random random = new Random(); card = random.nextInt(52); } while (list.contains(card) == true); // code for drawing the card by the number list.add(card); 这个逻辑的唯一问题是当只剩下一张卡时,随机获得该卡的可能性不到2%.系统花了很多时间找到卡.它继续检查while while循环. 解决方法
一种选择是以包含所有卡的完整arraylist开始,然后删除随机索引,直到列表为空,此时您将重新填充它.
例: ArrayList<Integer> list = new ArrayList<Integer>(); for(int i=0;i<52;i++){ list.add(i+1); } int c = 52; Random random = new Random(); while(c>0){ int r = random.nextInt(c--); int card = list.get(r); list.remove(r); } resetList(); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |