Java 随机数生成实战:范围字符串解析与动态区间控制
在编程中,随机数生成是常见需求,无论是模拟数据、游戏开发还是测试用例,都可能需要它。Java 提供了多种生成方式,但如何根据不同的业务需求灵活地生成特定范围的随机数,往往需要一些技巧。
下面我们通过两个实际场景来演示如何在 Java 中处理这类问题:一是解析范围字符串(如 "0.1-0.3")并生成对应的随机整数;二是基于一个整数的一半值,在其前后范围内生成动态随机数。
Java 随机数基础
Java 生成随机数的常用方式包括 Math.random()、Random 类、ThreadLocalRandom(多线程推荐)以及 SecureRandom(加密场景)。本文主要使用 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);
}
}
案例一:解析范围字符串生成随机数
场景需求
假设我们需要根据配置字符串生成随机金额,例如输入 "0.1-0.3" 代表 0.1 元到 0.3 元。要求解析该字符串,将单位转换为分(0.1 元=10 分),并在转换后的整数范围内生成随机数。
代码实现
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) {
();
}
}
}


