Java的Random类详解

Random类 (java.util)

Random类中实现的随机算法是伪随机,也就是有规则的随机。在进行随机时,随机算法的起源数字称为种子数(seed),在种子数的基础上进行一定的变换,从而产生需要的随机数字。

相同种子数的Random对象,相同次数生成的随机数字是完全相同的。也就是说,两个种子数相同的Random对象,第一次生成的随机数字完全相同,第二次生成的随机数字也完全相同。这点在生成多个随机数字时需要特别注意。

Random对象的生成

Random类包含两个构造方法,下面依次进行介绍:

a、public Random()

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

 b、public Random(long seed)

该构造方法可以通过制定一个种子数进行创建。

        Random random = new Random();
        Random random1 = new Random(10);
        System.out.println("random:" + random);
        System.out.println("random1:" + random1);

Random类中的常用方法

Random类中的方法比较简单,每个方法的功能也很容易理解。需要说明的是,Random类中各方法生成的随机数字都是均匀分布的,也就是说区间内部的数字生成的几率是均等的。

a、public boolean nextBoolean()

这里写图片描述

该方法的作用是生成一个随机的boolean值,生成true和false的值几率相等,也就是都是50%的几率。

b、public double nextDouble()

这里写图片描述

该方法的作用是生成一个随机的double值,数值介于[0,1.0)之间。

c、public int nextInt()

这里写图片描述

该方法的作用是生成一个随机的int值,该值介于int的区间。

d、public int nextInt(int n)

这里写图片描述

该方法的作用是生成一个随机的int值,该值介于[0,n)的区间,也就是0到n之间的随机int值,包含0而不包含n。

e、public void setSeed(long seed)

这里写图片描述

该方法的作用是重新设置Random对象中的种子数。设置完种子数以后的Random对象和相同种子数使用new关键字创建出的Random对象相同。

其他问题

a、相同种子数Random对象问题

前面介绍过,相同种子数的Random对象,相同次数生成的随机数字是完全相同的。

这里写图片描述

b、关于Math类中的random方法

其实在Math类中也有一个random方法,该random方法的工作是生成一个[0,1.0)区间的随机小数。

这里写图片描述

通过阅读Math类的源代码可以发现,Math类中的random方法就是直接调用Random类中的nextDouble方法实现的。

只是random方法的调用比较简单,所以很多程序员都习惯使用Math类的random方法来生成随机数字。

参考资料:http://www.cnblogs.com/Fskjb/archive/2009/08/29/1556417.html

  • 4
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
JAVA中的Random是用于生成伪随机数的工具,可以用来生成随机的整数、浮点数、布尔值等。下面是Random详解: 1. 构造方法 Random提供了两个构造方法: - Random(): 无参构造方法,使用默认种子,即当前系统时间的毫秒数。 - Random(long seed): 使用指定的种子创建一个Random对象。如果使用相同的种子创建两个Random对象,则它们将生成相同的随机数序列。 2. 方法 Random提供了很多方法,下面是一些常用的方法: - nextInt(): 生成一个int型的随机数。 - nextInt(int bound): 生成一个介于0(包括)和指定值(不包括)之间的int型的随机数。 - nextLong(): 生成一个long型的随机数。 - nextDouble(): 生成一个double型的随机数,范围是0.0(包括)到1.0(不包括)。 - nextFloat(): 生成一个float型的随机数,范围是0.0(包括)到1.0(不包括)。 - nextBoolean(): 生成一个随机的布尔值。 - nextBytes(byte[] bytes): 生成一组随机的字节数组。 3. 示例 下面是一个使用Random生成随机数的示例: ```java import java.util.Random; public class RandomDemo { public static void main(String[] args) { Random random = new Random(); int num1 = random.nextInt(100); // 生成0-99之间的随机整数 double num2 = random.nextDouble(); // 生成0.0-1.0之间的随机小数 boolean flag = random.nextBoolean(); // 生成随机布尔值 System.out.println("随机整数:" + num1); System.out.println("随机小数:" + num2); System.out.println("随机布尔值:" + flag); } } ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值