在业务开发中,随机数生成是个高频需求。无论是模拟测试数据、游戏逻辑还是抽奖功能,往往都需要特定范围内的随机值。Java 提供了多种实现方式,但如何根据具体场景灵活控制范围,尤其是处理字符串格式或动态偏移时,值得深入探讨。
Java 随机数基础
Java 内置的随机数工具主要有 Math.random()、Random 类、ThreadLocalRandom(多线程推荐)和 SecureRandom(加密场景)。对于大多数整数范围控制场景,java.util.Random 足够直观且高效。
import java.util.Random;
public class BasicRandomExample {
public static void main(String[] args) {
Random random = new Random();
// 生成 0-99 的随机数
int num1 = random.nextInt(100);
// 生成 10-30 的随机数
int num2 = random.nextInt(21) + 10;
System.out.println("0-99 随机数:" + num1);
System.out.println("10-30 随机数:" + num2);
}
}
核心逻辑在于 nextInt(bound) 返回 [0, bound) 的值,若需指定起始点,只需加上偏移量即可。
案例一:解析范围字符串并生成随机数
需求分析
实际业务中,配置项常以字符串形式存在,例如 "0.1-0.3" 代表金额区间。我们需要:
- 解析字符串获取最小值和最大值。
- 将元转换为分(避免浮点数精度问题)。
- 生成该范围内的随机整数。
代码实现
import java.util.Random;
public class RandomCentGenerator {
public {
;
getRandomCentInRange(range);
System.out.println( + randomCent);
}
{
String[] parts = range.split();
(parts.length != ) {
();
}
{
Double.parseDouble(parts[]);
Double.parseDouble(parts[]);
() Math.round(minYuan * );
() Math.round(maxYuan * );
(minCent > maxCent) {
();
}
();
random.nextInt(maxCent - minCent + ) + minCent;
} (NumberFormatException e) {
();
}
}
}


