Java random()函数

本文详细解析了Java中两种随机数生成方式:java.lang.Math.Random与java.util.Random的区别及使用方法。介绍了Math.Random()返回[0.0,1.0)区间内随机double值的特点,以及java.util.Random通过系统时间或指定种子生成随机数序列的机制。

Java中存在着两种Random函数:

一、java.lang.Math.Random;
调用这个Math.Random()函数能够返回带正号的double值,
该值大于等于0.0且小于1.0,即取值范围是[0.0,1.0)的左闭右开区间,
返回值是一个伪随机选择的数,在该范围内(近似)均匀分布。
二、java.util.Random
Random():创建一个新的随机数生成器。默认当前系统时间的毫秒数作为种子数

Random(long seed):使用单个 long 种子创建一个新的随机数生成器。
对于种子相同的Random对象,生成的随机数序列是一样的。
ps:直接使用Random无法避免生成重复的数字,如果需要生成不重复的随机数序列,需要借助数组和集合类

### JavaRandom函数的用法 在Java中,`Random`类位于`java.util`包下,主要用于生成伪随机数。它可以通过多种方式生成不同范围内的整数、浮点数或其他数据类型的随机数值[^1]。 #### 使用 `Random` 类生成随机数 以下是通过 `Random` 类生成随机数的一个典型例子: ```java import java.util.Random; public class RandomExample { public static void main(String[] args) { Random r = new Random(); int randomNumber = r.nextInt(101); // 生成0到100之间的随机整数 System.out.println(randomNumber); } } ``` 上述代码展示了如何利用 `Random` 对象的 `nextInt(int bound)` 方法来生成指定范围内(不包括上限值)的随机整数[^4]。 #### 使用 `Math.random()` 方法生成随机数 除了 `Random` 类之外,还可以使用 `Math.random()` 方法生成双精度浮点型的随机数。该方法返回的是介于 `[0.0, 1.0)` 范围内的随机数[^2]。如果需要生成更大范围的随机数,则可通过乘法扩展其区间。例如: ```java public class MathRandomExample { public static void main(String[] args) { double randomDouble = Math.random(); // 返回0至小于1的随机数 int randomNumberInRange = (int)(Math.random() * 101); // 将范围扩大到0到100之间 System.out.println(randomDouble); System.out.println(randomNumberInRange); } } ``` 这里需要注意的是,`Math.random()` 只能生成 `double` 类型的结果,并且无法直接设置种子值以实现可重复性的随机序列。 #### 构造函数与实例化 当使用 `Random` 类时,有两种主要的方式对其进行初始化: - 不带参数的构造器会基于当前时间作为默认种子。 - 带有单个 long 参数的构造器允许开发者显式设定种子值以便获得一致的结果集[^3]。 示例代码如下所示: ```java import java.util.Random; public class SeedExample { public static void main(String[] args) { Random fixedSeed = new Random(10L); // 设置固定的种子值 System.out.println(fixedSeed.nextInt(101)); Random noSeed = new Random(); // 默认采用系统时间为种子 System.out.println(noSeed.nextInt(101)); } } ``` 以上介绍了两种常见的生成随机数的方法及其特点,在实际开发过程中可以根据具体需求选择合适的方式来获取所需的随机数值[^5]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值