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

Java中Set集合循环生成随机数数量不符预期问题求助

问题原因与解决方法

问题根源

Set集合的核心特性是不存储重复元素。你循环10次生成1-10的随机数,但随机数很可能重复,重复的元素会被Set自动过滤,所以最终集合的元素数量总是少于等于10,且每次结果都不固定。

解决方案

方案一:循环填充直到集合满10个元素

通过while循环持续生成随机数,直到集合大小达到10(因为1-10总共只有10个不重复的数,此时集合会包含所有数字):

private static Set<Integer> losowanie() {
    Set<Integer> result = new TreeSet<>();
    Random random = new Random();

    while (result.size() < 10) {
        result.add(random.nextInt(10) + 1);
    }
    return result;
}

方案二:先生成全量数据再打乱顺序(更高效)

先把1-10的所有数字存入列表,再打乱顺序后转成Set,避免反复生成随机数碰运气:

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

private static Set<Integer> losowanie() {
    List<Integer> numbers = new ArrayList<>();
    // 初始化1到10的所有数字
    for (int i = 1; i <= 10; i++) {
        numbers.add(i);
    }
    // 随机打乱列表顺序
    Collections.shuffle(numbers);
    // 转换为TreeSet(保持排序),也可以用HashSet
    return new TreeSet<>(numbers);
}

内容的提问来源于stack exchange,提问作者FlyingRacoon51

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 03:36:21