Java Random函数参数

探讨了Java中使用47作为随机数生成器种子的原因。47被广泛认为能提高随机数的质量,并且在《Thinking in Java》一书中被频繁提及。

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

看Java编程思想看到这样一个函数 new Random(47)参数为什么是47呀?

解答:
47就是所谓的种子 如果不填充数值的话 那么默认参数为系统时间 THINK IN JAVA 里总会有new Random(47)
47是一个产生随机数的魔法数字,这个问题到现在都没人能够解释,只是经过很多次试验得到的,《Thinking in java》的作者布鲁斯.艾克尔也提到:由47做种后,产生的随机数更加体现了随机性。它没有什么具体的意义,当种子是47的时候,随机率是最大的。

### 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]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值