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

如何用Java实现定时生成1-100随机数,命中1、50、95序列后停止并输出统计信息

Java作业实现方案

实现思路

  • 定时生成逻辑:对新手友好的方案采用Thread.sleep()实现固定间隔生成,不需要引入复杂的调度类
  • 序列匹配逻辑:用长度为3的滑动窗口存储最近生成的3个随机数,每次生成新数后更新窗口,和目标序列[1,50,95]比对,匹配成功直接终止运行
  • 统计逻辑:程序启动时记录开始时间戳,每次生成随机数计数+1,终止时记录结束时间戳,最后统一输出统计结果

完整可运行代码

import java.util.Random;
import java.util.Date;

public class RandomNumberGenerator {
    public static void main(String[] args) throws InterruptedException {
        // 可调整参数:随机数生成间隔(单位毫秒,1000=1秒)
        final int GENERATE_INTERVAL = 100;
        // 随机数取值范围
        final int MIN_VALUE = 1;
        final int MAX_VALUE = 100;
        // 终止匹配序列
        final int[] STOP_SEQUENCE = {1, 50, 95};

        // 统计变量初始化
        long startTime = System.currentTimeMillis();
        int generateCount = 0;
        // 滑动窗口存储最近3个随机数
        int[] recentNumbers = new int[3];
        Random random = new Random();

        while (true) {
            // 生成1-100范围内的随机数
            int currentNum = random.nextInt(MAX_VALUE - MIN_VALUE + 1) + MIN_VALUE;
            generateCount++;

            // 更新滑动窗口:旧元素前移,新元素放入最后一位
            recentNumbers[0] = recentNumbers[1];
            recentNumbers[1] = recentNumbers[2];
            recentNumbers[2] = currentNum;

            // 生成数量≥3时开始检查序列匹配
            if (generateCount >= STOP_SEQUENCE.length) {
                boolean isMatch = true;
                for (int i = 0; i < STOP_SEQUENCE.length; i++) {
                    if (recentNumbers[i] != STOP_SEQUENCE[i]) {
                        isMatch = false;
                        break;
                    }
                }
                // 匹配成功则终止循环
                if (isMatch) {
                    break;
                }
            }

            // 等待指定间隔后生成下一个随机数
            Thread.sleep(GENERATE_INTERVAL);
        }

        long endTime = System.currentTimeMillis();
        // 输出结果
        System.out.println("=== 任务执行完成 ===");
        System.out.println("累计生成随机数个数:" + generateCount);
        System.out.println("任务开始时间:" + new Date(startTime));
        System.out.println("任务结束时间:" + new Date(endTime));
    }
}

代码说明

  • 你可以自行调整GENERATE_INTERVAL参数修改生成频率,比如改成1000就是1秒生成1个随机数,调小到10可以更快触发终止条件
  • 随机数范围和终止序列都单独抽成了常量,需要修改需求的时候直接改顶部常量即可,不需要修改逻辑代码
  • 代码没有引入额外依赖,直接复制到本地新建.java文件即可编译运行,符合作业要求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 23:06:04