如何用Java生成随机数

在Java中,可以通过Math.random()方法和Random类来生成随机数。Random类提供更丰富的生成各种类型随机数的方法,且所有方法生成的数字是均匀分布的。示例代码展示了如何使用Random类生成不同类型的随机数,以及如何通过Math.random()方法调整范围生成特定数值。
摘要由CSDN通过智能技术生成

  在Java中要生成一个指定范围之内的随机数字有两种方法:一种是调用 Math 类的 random() 方法,一种是使用 Random 类。

        Random 类提供了丰富的随机数生成方法,可以产生 boolean、int、long、float、byte 数组以及 double 类型的随机数,这是它与 random() 方法最大的不同之处。random() 方法只能产生 double 类型的 0~1 的随机数。

        Random 类位于 java.util 包中,该类常用的有如下两个构造方法。

Random():该构造方法使用一个和当前系统时间对应的数字作为种子数,然后使用这个种子数构造 Random 对象。

Random(long seed):使用单个 long 类型的参数创建一个新的随机数生成器。

        Random 类提供的所有方法生成的随机数字都是均匀分布的,也就是说区间内部的数字生成的概率是均等的。

 

例 1

        下面编写一个 Java 程序,演示如何使用 Random 类提供的方法来生成随机数。具体代码如下:

import java.util.Random;

public class Test06 {

public static void main(String[] args) {

Random r = new Random();

double d1 = r.nextDouble(); // 生成[0,1.0]区间的小数

double d2 = r.nextDouble() * 7; // 生成[0,7.0]区间的小数

int i1 = r.nextInt(10); // 生成[0,10]区间的整数

int i2 = r.nextInt(18) - 3; // 生成[-3,15)区间的整数

long l1 = r.nextLong(); // 生成一个随机长整型值

boolean b1 = r.nextBoolean(); // 生成一个随机布尔型值

float f1 = r.nextFloat(); // 生成一个随机浮点型值

System.out.println("生成的[0,1.0]区间的小数是:" + d1);

System.out.println("生成的[0,7.0]区间的小数是:" + d2);

System.out.println("生成的[0,10]区间的整数是:" + i1);

System.out.println("生成的[-3,15]区间的整数是:" + i2);

System.out.println("生成一个随机长整型值:" + l1);

System.out.println("生成一个随机布尔型值:" + b1);

System.out.println("生成一个随机浮点型值:" + f1);

System.out.print("下期七星彩开奖号码预测:");

for (int i = 1; i < 8; i++) {

int num = r.nextInt(9); // 生成[0,9]区间的整数

System.out.print(num);

}

}

}

        本实例每次运行时结果都不相同,这就实现了随机产生数据的功能。该程序的运行结果如下:

生成的[0,1.0]区间的小数是:0.8773165855918825

生成的[0,7.0]区间的小数是:6.407083074782282

生成的[0,10]区间的整数是:5

生成的[-3,15]区间的整数是:4

生成一个随机长整型值:-8462847591661221914

生成一个随机布尔型值:false

生成一个随机浮点型值:0.6397003

下期七星彩开奖号码预测:0227168

例 2

        Math 类的 random() 方法没有参数,它默认会返回大于等于 0.0、小于 1.0 的 double 类型随机数,即 0<=随机数<1.0。对 random() 方法返回的数字稍加处理,即可实现产生任意范围随机数的功能。

下面使用 random() 方法实现随机生成一个 2~100 偶数的功能。具体代码如下:

public class Test07 {

public static void main(String[] args) {

int min = 2; // 定义随机数的最小值

int max = 102; // 定义随机数的最大值

// 产生一个2~100的数

int s = (int) min + (int) (Math.random() * (max - min));

if (s % 2 == 0) {

// 如果是偶数就输出

System.out.println("随机数是:" + s);

} else {

// 如果是奇数就加1后输出

System.out.println("随机数是:" + (s + 1));

}

}

}

    由于 m+(int)(Math.random()*n) 语句可以获取 m~m+n 的随机数,所以 2+(int)(Math. random()*(102-2)) 表达式可以求出 2~100 的随机数。在产生这个区间的随机数后还需要判断是否为偶数,这里使用了对 2 取余数,如果余数不是零,说明随机数是奇数,此时将随机数加 1 后再输出。

该程序的运行结果如下:

随机数是:20

        以上就是用Java生成随机数的内容。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值