如何在Java中生成100到2000间步长为100的随机整数?
解决100-2000步长100的随机整数生成问题
首先你原代码有个明显错误:random.nextInt(start - end)里的参数是负数,nextInt要求传入非负整数,这会直接抛出IllegalArgumentException,得先把这个问题改了。
要实现步长100的需求,核心思路是把范围转换成步长为1的整数区间,生成随机数后再放大100倍:
- 先计算这个区间内的数字总数:(2000 - 100)/100 + 1 = 20个(对应100、200...2000)
- 生成0到19之间的随机整数(共20个值)
- 把这个随机数乘以100,再加上起始值100,就得到符合要求的结果
修正后的代码如下:
Random random = new Random(); int start = 100; int end = 2000; int step = 100; // 计算区间内的元素个数 int count = (end - start) / step + 1; // 生成0到count-1的随机数,再转换为目标值 int result = random.nextInt(count) * step + start;
这样生成的结果就只会是100、200、...、2000这些步长为100的整数,完全符合你的需求。
另外也可以换个更简洁的写法,直接生成1到20的随机数再乘以100,效果完全一致:
Random random = new Random(); int result = (random.nextInt(20) + 1) * 100;
只是第一种写法在后续调整起始值、步长或结束值时,扩展性更好。
内容的提问来源于stack exchange,提问作者user19922759
相关产品推荐
相关产品推荐

