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

向单链表添加随机数时重复生成同一数值的问题求助

问题原因

你定义的randomNumber是静态成员变量,它只会在类加载时执行一次赋值操作,也就是只生成一次随机数。循环里反复添加的都是这个已经固定下来的值,自然全是重复的。

解决办法

把生成随机数的逻辑移到循环内部,让每次循环都调用Random.nextInt()生成新的随机数。另外,Random实例可以保留为静态(避免每次循环创建新实例,更高效),但不需要提前把随机数存到变量里。

修正后的代码:

// 创建Random实例(静态,全局复用)
static Random rnum = new Random();

public static void main(String[] args) {
    // 生产者链表
    SinglyLinkedList pList = new SinglyLinkedList();
    
    // 循环添加随机节点
    for (int i = 0; i < 10; i++) {
        // 每次循环生成新的随机数(范围1-107)
        int randomNumber = rnum.nextInt(107) + 1;
        pList.addNode(randomNumber);
    }
}
补充说明

Random.nextInt(n)会生成0到n-1之间的整数,所以要得到1到107的数,只需要nextInt(107)加1就行,比原来的(107-1)+1写法更简洁,逻辑是完全一致的。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 06:33:15