Java生成范围内的随机数


import java.util.Random;

public class Test {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		//默认构造方法
		Random random = new Random();
			
		//产生一个0-100不包含100的整数
		int a  = random.nextInt(100);
		System.out.println(a);
		
		
		//生成10到30之间的数字
		int min = 10;
		int max = 30;
		int res = new Random().nextInt(max - min + 1) + min;
		System.out.println(res);
		
		/**
		 * 生成 [m,n] 之间的数字 
		 * int i = random.nextInt( n-m+1 ) + m;
		 */
		// 生成64-128内的随机数
		int i = random.nextInt(128 - 64 + 1) + 64;
		System.out.println(i);
		
		/**
		 * 生成[0,n]之内的数字 
		 * int i1 = random.nextInt( n-0+1 ) + 0;
		 * 
		 * 也可写成
		 * random.nextInt(n);
		 * 会产生一个 [0,n] 不包含n的整数
		 */
		// 生成0-64内的数字
		int i1 = random.nextInt(64 - 0 + 1);
		System.out.println(i1);

	}

}

### Java 中使用 `Math.random()` 生成指定范围内随机数 `Math.random()` 方法返回一个介于 `[0, 1)` 的伪随机浮点数[^1]。为了生成指定范围内随机数,可以通过简单的算术运算将其映射到所需的区间。 假设需要生成一个在 `[min, max)` 范围内的随机整数,则可以按照以下方式实现: ```java public class RandomNumberGenerator { public static int getRandomNumberInRange(int min, int max) { if (min >= max) { throw new IllegalArgumentException("Max must be greater than min"); } return (int)(Math.random() * (max - min)) + min; // 将 [0,1) 映射到 [min,max) } public static void main(String[] args) { int min = 10; int max = 20; System.out.println(getRandomNumberInRange(min, max)); } } ``` 上述代码通过 `(Math.random() * (max - min)) + min` 实现了将 `[0,1)` 转换为 `[min, max)` 的功能。需要注意的是,由于 `Math.random()` 返回的值永远不会等于 1,因此最大值不会被包含在结果集中。 如果希望生成双精度类型的随机数而不是整数,只需移除强制类型转换部分即可: ```java public static double getRandomDoubleInRange(double min, double max) { return Math.random() * (max - min) + min; // 对应双精度数值的计算 } ``` 尽管 `Math.random()` 提供了一种简单的方式来生成随机数,但它并不是真正的随机数发生器[^2]。实际上,它依赖于底层算法产生的伪随机序列[^3]。对于大多数应用来说,这种伪随机性已经足够;但在安全性要求较高的场景下(如加密),建议改用更安全的随机数生成机制,例如 `SecureRandom` 类。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值