Logo

郎哥编程

随机数

2019-12-15 943

随机数在实际编程中使用非常普遍,数据加密、身份鉴定、电子商务等应用都要用到随机数。在Java语言中,Math类的random()方法和Random类可以实现随机数的产生。

使用Math类的random()方法产生随机数

Math类的random()方法可以随机产生值范围为0至1之间的随机double类型的数。虽然random()方法产生的随机数在0至1范围内,但可以通过数学运算,就可以使用这个方法产生任意范围的随机数。

例如下面的代码可产生6位随机数:

int randomNumber =  (int)(Math.random() * 1000000);

案例1:随机产生8位随机数,并且产生的随机数是偶数。

在PBaseUnit16项目unit包下创建Java类RandomSample1。代码如下:

/** 
* @Title: RandomSample1.java 
* @Package unit 
* @Description: Java基础知识课程案例
* @author 编程训练营 
* @date 
* @version V1.0 
*/ 
 
package unit;
 
/** 
* @ClassName: RandomSample1 
* @Description: 数值处理与运算(随机数)案例1 
* @author 编程训练营 
* @date 
* 
*/
 
public class RandomSample1 {
 
    /** 
    * @Title: main 
    * @Description:Java程序入口main方法  
    * @param @param args    参数 
   
    * @return void    返回类型 
    * @throws 
    */
 
    public static void main(String[] args) {
       // 产生8位随机数
       int randomNumber =  (int)(Math.random() * 100000000);
       // 判断是否是偶数
       if( randomNumber % 2 != 0 )
       {
          randomNumber++;
       }
       System.out.println("随机数为:" + randomNumber);
    }
 
}

程序结构分析

程序使用Math类random()方法产生一个8位的随机数,然后对产生随机数做偶数化处理。

程序执行结果如下图所示:

image.png

使用Random类产生随机数

Random类在Java.util包下,它提供了多种获取随机数的方法。

下面给出Random类的常用方法:

(1)double  nextDouble()

产生一个0.0到1.0之间的随机数。

(2)int  nextInt()

产生一个int随机数。

(3)long  nextLong()

产生一个lang随机数。

(4)void  setSeed(long seed)

设置随机数生成器的种子。

使用Random类或Math类的random()方法产生的随机数并不是真正的随机数,它是通过某种算法生成一个数的序列,这个序列满足一些条件看上去像是随机数。setSeed就是设置序列的初始种子,给出同样的种子,生成的两个序列是一摸一样的。一般都用当前时间作为种子,来得到不一样的序列。

案例1:使用Random类产生随机数。

在PBaseUnit16项目unit包下创建Java类RandomSample2。代码如下:

/** 
* @Title: RandomSample2.java 
* @Package unit 
* @Description: Java基础知识课程案例
* @author 编程训练营 
* @date 
* @version V1.0 
*/ 
 
package unit;
 
import java.util.Random;
 
/** 
* @ClassName: RandomSample2 
* @Description: 数值处理与运算(随机数)案例2
* @author 编程训练营 
* @date 
* 
*/
 
public class RandomSample2 {
 
    /** 
    * @Title: main 
    * @Description:Java程序入口main方法
    * @param @param args    参数 
   
    * @return void    返回类型 
    * @throws 
    */
 
    public static void main(String[] args) {
       // 实例化Random对象
       Random random = new Random();
       //获得当前时间的毫秒数
        long time = System.currentTimeMillis();
        // 把time设置为种子
        random.setSeed(time);
        // 产生10个long型随机数
        for( int i = 0; i < 10; i++ )
        {
          System.out.printf("第%d个随机数为:%s\n",i,random.nextLong());
        }
      
    }
 
}

程序结构分析

程序实例化random对象,调用System类的currentTimeMillis()方法获取当前时间,在调用random对象的setSeed()方法将当前时间设置为随机数生成器的种子,最后使用for循环连续输出10个long类型的随机数。

程序执行结果如下图所示:

image.png

代码在线纠错(通义千问 qwen-max)

支持粘贴多个代码文件,提交后由阿里云通义千问自动分析代码漏洞、语法错误、逻辑问题并给出修改建议。
您已解锁 AI 代码纠错功能,可正常使用!

评论区

登录 后发表评论
暂无评论