Java常用随机数生成方法

在编程中生成随机数是一个很常见的需求,之前使用 Python 有个 random 类可以轻松解决大多数生成随机数的问题,在 Java 中有许多不同的地方,稍显麻烦些。记录一些自己使用的生成随机数的方法,一部分摘自网络或视频学习,一部分源于自己的想法。

在 Java 中生成随机数最常使用的两个类 Random、Math。使用的都比较多,但是很多人仍然不清楚它们的区别。Math类位于 lang 包中可以直接使用,Random 位于 java.util 包中。Math 内部的实现使用了 Random.nextDouble() 方法,所以使用 Random 生成随机数更加有效率,并且 Random 提供了许多便捷的生成随机数的方法。

下面展示一些常用的生成随机数的示例:

1、生成范围 0~100 的随机整数(不包括100):

//使用 Random:构造器有一个参数 seed,留空则使用当前时间戳 Timestamp。
//使用 Random 需要先实例化对象,实际上我觉得应该设定为静态方法,这样使用更方便些。(后续示例省略实例化过程,默认实例化了个 random 对象)
Random random = new Random();
int num = random.nextInt(100);

//使用 Math
int num = (int)(Math.random() * 100);

2、生成范围 -100~100 的随机整数(不包括-100和100)

//使用 Random
int num = random.nextInt(100) - random.nextInt(100);

//使用 Math
int num = (Math.random*100) - (Math.random*100);

3、生成 20~80(不包含80) 的随机整数

// Random
int num = random.nextInt(60) + 20;

// Math
int num = Math.random()*60 + 20

4、90%的几率生成 0~80 随机整数,10%的几率生成 80~100的

生成 0~80 和生成 80~100 的随机整数是已解决的问题,最大问题在于指定概率的选择 A 和 B。实际上这个问题也是很好解决的,我们可以先生成一个 0~100 的随机数,判断随机数的值如果小于90,那么生成 0~80 的随机整数,判断随机数的值大与90,那么生成 80~100 的随机整数。

由于这个有过 Java 基础的人都可以结合上面的示例写出来,所以这里就不再重复了。


评论

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注