Random和random的区别

使用的区别:

      random属于java.lang包下Math类的方法,属于静态方法,不需要创建对象,只用通过类名点的方式直接调用即可,返回值为float类型。例:float f=Math.random();

      而Random属于java.util包,需要通过创建对象来进行接收随机数的返回值。例:Random r=new Random();   int number=r.nextInt();

从精准度分析:

      Math.random()产生的随机数范围是[0,1),左闭右开区间,而我们是假设要取一个5-10范围内的随机数,当我们使用的是数学类 Math.random()×5+5;但是所需要注意到的是,设计到乘法的情况时,在随机数取不到1的前提下,0.9999999999×5无限接近于4.6,我们永远取不到4.6-5.0范围内的随机数,会丢失一部分精度。

      而Random类就非常好的避免这一情况,在它的类中有nextInt(),nextFloat(),nextDouble()来进行专门的取随机数,nextInt()如果不赋值的情况下,默认随机范围是-2147483648~2147483647,而nextFloat()的随机范围则是[0-1)。如果需要取[5-10)的随机数范围,则我们可以通过小数部分和整数部分分开随机再相加的方式进行精准随机,这样的话不会丢失精度例:nextInt(5)+5+nextFloat();

从优缺点分析:

      所以如果随机数涉及到小数的话,建议使用Random类,准确度高,不会丢失精度;如果随机数取整的话,则是推荐使用Math.random,不需要导包、创建对象,使用方便 。

  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值