随机数
外观
< Java 编程
导航 语言基础 主题: ) |
要生成随机数,可以使用`Math.random()`方法,该方法返回一个大于等于 0.0 且小于 1.0 的`double`值。
以下代码返回 n 和 m 之间的随机整数(其中 *n <= randomNumber < m*)
代码段 3.30:随机整数。
int randomNumber = n + (int)(Math.random() * ( m - n ));
|
或者,`java.util.Random` 类提供了生成随机`boolean`、`byte`、`float`、`int`、`long` 和“高斯分布”的方法(从均值为 0.0、标准差为 1.0 的正态分布中获取`double`值)。例如,以下代码等同于上面的代码
代码段 3.31:带有高斯分布的随机整数。
Random random = new Random();
int randomNumber = n + random.nextInt(m - n);
|
作为使用随机数的示例,我们可以创建一个程序,该程序使用 Random 对象模拟抛硬币 20 次。
|
|
当然,如果您运行该程序,您可能会得到不同的结果。
`Math.random()` 和 `Random` 类都生成伪随机数。对于许多应用程序来说,这已经足够好了,但请记住,它不是 *真正* 的随机数。如果您需要更安全的随机数生成器,Java 提供了 `java.security.SecureRandom` 包。`Math.random()` 和 `Random` 类的工作原理是,它们会选择一个“种子”来生成伪随机数。`SecureRandom` 提高了安全性,以确保伪随机数生成器使用的种子是非确定性的——也就是说,您不能简单地将机器置于相同的状态以获得相同的结果集。创建 `SecureRandom` 实例后,您可以像使用 `Random` 类一样使用它。
如果您需要 *真正* 随机的数字,您可以获取硬件随机数生成器或使用随机数生成服务。