使用random1、random2从listOfNums选数存入numberSelected ArrayList的最优方案
嘿,这个需求其实很好实现,最快最简洁的写法得看你用的编程语言,不过看你提到了ArrayList和random相关的方法,我默认是Java环境哈,给你几种最直接的写法:
最快捷简洁的实现方式
核心逻辑都是通过随机索引从源列表listOfNums中获取元素,再添加到目标numberSelected集合,根据你的random1、random2的使用场景分两种情况:
情况1:用两个已初始化的Random实例各取一个数
如果random1和random2是你已经创建好的Random对象,那一行代码就能完成需求(或者拆成两行更易读):
// 一行简洁版 numberSelected.addAll(List.of(listOfNums.get(random1.nextInt(listOfNums.size())), listOfNums.get(random2.nextInt(listOfNums.size())))); // 拆分易读版 numberSelected.add(listOfNums.get(random1.nextInt(listOfNums.size()))); numberSelected.add(listOfNums.get(random2.nextInt(listOfNums.size())));
情况2:仅需随机选取两个数(单Random实例即可)
如果你只是需要从列表里选两个随机数,甚至不用两个Random实例,一个就够,代码同样简洁:
Random random = new Random(); numberSelected.add(listOfNums.get(random.nextInt(listOfNums.size()))); numberSelected.add(listOfNums.get(random.nextInt(listOfNums.size())));
额外优化:避免重复选取(如果有需求)
如果要求选中的两个数值不能重复,可以加个简单的循环判断:
int num1 = listOfNums.get(random1.nextInt(listOfNums.size())); int num2; do { num2 = listOfNums.get(random2.nextInt(listOfNums.size())); } while (num2 == num1); numberSelected.addAll(List.of(num1, num2));
内容的提问来源于stack exchange,提问作者user9273028
相关产品推荐
相关产品推荐

