如何创建包含0-25随机排列元素的ArrayList?
生成0-25随机排列的ArrayList解决方案
嘿,这事儿其实很简单!既然你不在意效率只要求功能可用,我给你两个直接的方案,都能完美解决重复和随机排列的问题:
方案一:先填充再洗牌(推荐,逻辑清晰且效率也不差)
思路很直观:先把0到25按顺序放进ArrayList,然后通过随机交换元素的方式打乱顺序,这样既不会有重复,又能保证每个位置都是随机的。
如果你想用Math.random()手动实现洗牌,代码可以这么写:
import java.util.ArrayList; public class RandomNumberList { public static void main(String[] args) { ArrayList<Integer> randomList = new ArrayList<>(); // 第一步:把0-25全部加入列表 for (int i = 0; i <= 25; i++) { randomList.add(i); } // 第二步:手动洗牌,用Math.random()生成随机索引交换元素 for (int i = randomList.size() - 1; i > 0; i--) { // 生成0到当前索引i的随机整数,确保每个元素都有机会被交换 int randomPos = (int) (Math.random() * (i + 1)); // 交换当前元素和随机位置的元素 int temp = randomList.get(i); randomList.set(i, randomList.get(randomPos)); randomList.set(randomPos, temp); } // 输出结果 System.out.println("随机排列的列表:" + randomList); } }
如果嫌手动写麻烦,也可以直接用Java自带的Collections.shuffle()方法,它底层也是基于随机数实现的,代码更简洁:
import java.util.ArrayList; import java.util.Collections; public class RandomNumberList { public static void main(String[] args) { ArrayList<Integer> randomList = new ArrayList<>(); for (int i = 0; i <= 25; i++) { randomList.add(i); } // 一行代码完成洗牌 Collections.shuffle(randomList); System.out.println("随机排列的列表:" + randomList); } }
方案二:逐个生成随机数并去重(最直白的思路)
这个方法完全贴合你提到的用Math.random()的需求,逻辑超级简单:不断生成0-25的随机数,检查是否已经在列表里,不在就加进去,直到列表填满26个元素。虽然效率不如洗牌法,但你不在意效率的话,这个方案最容易理解。
代码示例:
import java.util.ArrayList; public class RandomNumberList { public static void main(String[] args) { ArrayList<Integer> randomList = new ArrayList<>(); // 直到列表里有26个元素为止 while (randomList.size() < 26) { // 生成0-25的随机整数 int randomNum = (int) (Math.random() * 26); // 如果列表里没有这个数,就添加进去 if (!randomList.contains(randomNum)) { randomList.add(randomNum); } } System.out.println("随机排列的列表:" + randomList); } }
这两个方案都能满足你的需求,随便选一个用就行~
内容的提问来源于stack exchange,提问作者Keeawaop
相关产品推荐
相关产品推荐

