如何用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
相关产品推荐
相关产品推荐

