两种产生随机数的方式之间的对比(Math.random()方法 和 Random类)

在实际开发中,产生随机数的使用很普遍,而在JAVA中主要提供了两种方式产生随机数。其一:调用Math类中的random()方法;其二:使用Random类。

一:Math.random()方法

基本概述:这个方法能够产生在[0.0 , 1.0)之间的随机数,返回值类型是double。如果想要得到一个非double类型的数值(比如int),就需要进行强制装换。不在Math.random( )之前使用强制转换,eclipse可能报错。当然我们可以在Math.random( )语句上进行处理就可以达到在任意范围内产生随机数的效果。

如下图所示:
//进行强制装换的效果
在这里插入图片描述
//未进行强制装换的效果

在这里插入图片描述

package cn.kgc2;

public class randomMothed
{
    /**
      *  利用Math类中的random()方法产生随机数的示例
     * <一句话功能简述>
     * <功能详细描述>
     * @param args
     * @see [类、类#方法、类#成员]
     */
    
    //编写一个方法获取两个字符之间的随机数
    public static char getRandomChar(char char1,char char2)
    {
        return (char)(char1 + Math.random()*(char2 - char1));
    }
    
    public static void main(String[] args)
    {
        // 举一些简单的列子
        
        //因为所需要的是一个int型,但在Math类中产生随机数都是double型,所以需要强制转换
        int  example =(int)(Math.random()*10);
        System.out.println("第一个随机数是:" + example);
        System.out.println("=================================");
        
        //获取小写字母a--z之间的随机字符
        System.out.println("随机的小写字母:" + getRandomChar('a','z'));
        
        //获取大写字母A--Z之间的随机字符
        System.out.println("随机的大写字母:" + getRandomChar('A','Z'));
        
        //获取数字0--9之间的随机字符
        System.out.println("0--9之间随机的数字:" + getRandomChar('0','9'));
        
        //当然,根据ASCII的编码还可以对不同的字符进行相似操作,甚至Unicode的都可以
        
    }
    
}

输出结果是:
在这里插入图片描述

二:Random类

基本概述:另一种方式就是通过java.util.Random类,在main中引入import java.util.Random,通过实例化一个Random对象创建一个随机数生成器。语法格式是:
Random random = new Random ();
其中random是Random的对象,取名根据见名知义和驼峰命名的方式就可以。

package cn.kgc2;

import java.util.Random;

public class randomClass
{
    /**
             *   利用Random类产生随机数的示例
     * <功能详细描述>
     * @param args
     * @see [类、类#方法、类#成员]
     */
    
    public static void main(String[] args)
    {
        //实例化一个Random类
        Random random = new Random ();
        
        //随机产生一个整数并返回
        System.out.println("随机产生一个整数:  " + random.nextInt());
        
        //随机产生一个[0,10)之间的整数并返回
        System.out.println("随机产生一个[0,10)之间的整数:  " + random.nextInt(10));
        
        //随机产生一个布尔型的值并返回
        System.out.println("随机产生一个布尔值:  " + random.nextBoolean());
        
        //随机产生一个浮点型的值并返回
        System.out.println("随机产生一个浮点型的值:  " + random.nextFloat());
        
        //随机产生一个双精度浮点值并返回
        System.out.println("随机产生一个双精度浮点值:  " + random.nextDouble());
        
        //还可以返回其他类型的值,可以查看Random源码,其中有很多可返回值的类型
        
    }
    
}

输出结果是:
在这里插入图片描述

三:比较二者
1、语法格式:
(1)Math.random方法:Math.Random()*n;
(2)Random类:Random random = new Random ();
2、返回值类型和范围:
(1)Math.random方法:返回的是double的数值,范围在[0.0 , 1.0);
(2)Random类:返回值是根据Random类中提供的各种获取数据类型的方法决定的,范围在调用方法时输入数字决定。
3、使用方式:
(1)Math.random方法:因为是Math类中的方法,所以只有double类型,需要获取其他类型的数值,就需要进行强制转换;
(2)Random类:属于Random类,其中有很多不同返回值类型的方法。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值