Java随机数总结

本文详细介绍了Java中生成随机数的多种方法,包括使用java.util.Random类、Math.random()方法及System.currentTimeMillis()获取时间戳等,并提供了生成特定范围内随机数的具体实例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、Java中随机数生成方式
1)java.util.Random
Random类中的随机算法是伪随机,也就是有规则的随机,随机数实际上是seed经过运算后近似随机数的数字。指定seed,随机数序列确定;默认seed为系统当前时间戳。
常用方法:
· nextInt(),返回int值
· nextInt(n),返回[0, 1)
· nextDouble(),返回[0.0, 1.0),nextDouble()没有参数
//Random random = new Random();//默认构造方法    
Random random = new Random(10);//指定seed
int i = random.nextInt(10);
2)Math.random()
Math工具类,Math.random()返回[0.0, 1.0)double,内部实现就是封装了Random.nextDouble方法。
 double d = Math.random();
3)System.currentTimeMillis(),获取系统时间戳,取余
 long l = System.currentTimeMillis();    
 int i = (int)(l % 100);
2、范围随机数生成
1)整型
· [min, max),random.nextInt(max - min) + min
· [min, max],random.nextInt(max - min + 1) + min
· 以33.5%的概率生成1, 66.5%概率生成0:
Random random = new Random(10);
int sum = 0; //33.5%概率生成1,66.5%概率生成0
for (int i = 0; i < 100000; i++) {
    int data = random.nextInt(1000);
    if (data < 335) sum++;
}
System.out.println(sum);
2)浮点型
· [0, 1.0),random.nextInt()
· [0, max),random.nextInt() * max
· [min, max),random.nextInt() * (max - min) + min


### Java 中生成随机数的方法 在 Java 编程语言中,有多种方法可以生成随机数。以下是几种常见的实现方式及其特点: #### 1. 使用 `Math.random()` 方法 `Math.random()` 是一种简单易用的方式来生成随机数。该方法返回一个大于等于 0.0 且小于 1.0 的双精度浮点数[^1]。如果需要生成指定范围内的整数,则可以通过简单的算术运算完成。 ```java public class MathRandomExample { public static void main(String[] args) { double randomValue = Math.random(); int randomNumberBetween0And9 = (int)(Math.random() * 10); System.out.println("随机浮点数:" + randomValue); System.out.println("0 到 9 的随机整数:" + randomNumberBetween0And9); } } ``` 此方法适用于不需要高度随机性的场景,因为它基于固定的种子值[^1]。 --- #### 2. 使用 `Random` 类 `Random` 类位于 `java.util` 包中,提供了更灵活的随机数生成功能。它可以生成各种类型的随机数,包括整数、浮点数、布尔值等[^2]。 ##### a. 创建 `Random` 实例并生成随机数 通过实例化 `Random` 对象,可以调用其多个方法来生成不同类型的随机数[^3]。 ```java import java.util.Random; public class RandomClassExample { public static void main(String[] args) { Random random = new Random(); // 生成介于 [0, n) 范围内的随机整数 int randomInt = random.nextInt(10); // 生成随机 boolean 值 boolean randomBoolean = random.nextBoolean(); // 生成随机 float 和 double 数字 float randomFloat = random.nextFloat(); double randomDouble = random.nextDouble(); System.out.println("随机整数:" + randomInt); System.out.println("随机布尔值:" + randomBoolean); System.out.println("随机浮点数:" + randomFloat); System.out.println("随机双精度数:" + randomDouble); } } ``` ##### b. 不带参数的 `nextInt()` 方法 如果不传递任何参数给 `nextInt()` 方法,它将返回一个完整的 32 位随机整数值(可能为负数)。这种方法适合需要整个整型范围的情况[^5]。 ```java import java.util.Random; public class NextIntNoParameter { public static void main(String[] args) { Random random = new Random(); int fullRangeRandomInt = random.nextInt(); System.out.println("全范围随机整数:" + fullRangeRandomInt); } } ``` --- #### 3. 使用 `SecureRandom` 类 对于安全性要求较高的应用(如密码学),推荐使用 `SecureRandom` 类代替普通的 `Random` 类。虽然性能稍逊,但它能够提供更强的安全性和不可预测性[^4]。 ```java import java.security.SecureRandom; public class SecureRandomExample { public static void main(String[] args) { SecureRandom secureRandom = new SecureRandom(); int secureRandomNumber = secureRandom.nextInt(100); System.out.println("安全随机数:" + secureRandomNumber); } } ``` --- #### 总结 每种方法都有各自的适用场合: - 如果只需要快速简便地生成一些基本随机数,可以选择 `Math.random()` 或者 `Random` 类。 - 当涉及敏感数据处理时,则应优先考虑采用 `SecureRandom` 来增强系统的健壮性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值