Java生成随机数(random()和Random类)

在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中列出了Random类中常用的方法。

表1 Random类的常用方法

方法 说明
boolean nextBoolean() 生成一个随机的 boolean 值,生成 true 和 false 的值概率相等
double nextDouble() 生成一个随机的 double 值,数值介于 [0,1.0),含 0 而不包含 1.0
int nextlnt() 生成一个随机的 int 值,该值介于 int 的区间,也就是 -231~231-1。如果
需要生成指定区间的 int 值,则需要进行一定的数学变换
int nextlnt(int n) 生成一个随机的 int 值,该值介于 [0,n),包含 0 而不包含 n。如果想生成
指定区间的 int 值,也需要进行一定的数学变换
void setSeed(long seed) 重新设置 Random 对象中的种子数。设置完种子数以后的 Random 对象
和相同种子数使用 new 关键字创建出的 Random 对象相同
long nextLong() 返回一个随机长整型数字
boolean nextBoolean() 返回一个随机布尔型值
float nextFloat() 返回一个随机浮点型数字
double nextDouble() 返回一个随机双精度值

例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);
  }
 }
}12345678910111213141516171819202122232425复制代码类型:[java]

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

生成的[0,1.0]区间的小数是:0.8773165855918825生成的[0,7.0]区间的小数是:6.407083074782282生成的[0,10]区间的整数是:5生成的[-3,15]区间的整数是:4生成一个随机长整型值:-8462847591661221914生成一个随机布尔型值:false生成一个随机浮点型值:0.6397003下期七星彩开奖号码预测:022716812345678复制代码类型:[java]

例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));
  }
 }
}123456789101112131415复制代码类型:[java]

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

该程序的运行结果如下:

随机数是:20
(0)

相关推荐

  • java--第4章 数组

    实验内容:       1.一维数组的定义与赋值访问. 2.二维数组的定义与赋值访问. 3.冒泡排序的编程实现. 4.选择排序的编程实现. 实验步骤: 1. 定义一个含20个元素的整型数组,利用随机函 ...

  • 常用类

    常用类 包装类 在类中查看属性方法的快捷键:Ctrl+F12 java.lang包会默认导入每个Java文件,所以我们不需要导入这个包,直接用包中的类就好了 byte Byte short Short ...

  • Java Random 随机数

    package myrandom; import java.util.Random; /* * Random:用于产生随机数 * * 使用步骤: * A:导包 * import java.util.R ...

  • Java –生成随机字符串 – Programming language

    用纯Java生成随机无界字符串 @Testpublic void givenUsingPlainJava_whenGeneratingRandomStringUnbounded_thenCorrect ...

  • 都为你整理好了,5种Java 随机方式对比!你都知道吗?

    都为你整理好了,5种Java 随机方式对比!你都知道吗?

  • Java 生成随机数的 5 种方式,你知道几种?

    Java 生成随机数的 5 种方式,你知道几种?

  • 利用java生成uuid

    在实际项目中,我们可能想生成一个随机的而且可以保证唯一的标识,比如在给图片命名时,这时就可以采用uuid来生成随机字符串,这个随机字符串基本上是不会出现重复的. 什么是UUID uuid,就是 通用唯 ...

  • excel怎样生成随机数

    在写这篇教程之前,我要吟诗一首,啊! 世界仓管千千万,唯有我是大混蛋: 仓库管好还不算,还写教程来骗钱. 辛辛苦苦大半年,粉丝还没到一千: 啥事做着都很难,甩开膀子加油干. 吟完诗了,该写教程啦! 在 ...

  • java学习——47、AWT组件类

    AWT(Abstract Window Tookit,抽象窗口工具集),主要包括组件(component).容器(container).窗口(Window).面板(Panel).框架(Frame).对 ...

  • Java基础之:Collections工具类

    Java基础之:Collections工具类 Collections类简单介绍 Collections 是一个操作 Set.List 和 Map 等集合的工具类 Collections 中提供了一系列 ...

  • Excel怎么生成随机数?

    Excel怎么生成随机数?如何生成指定范围内的随机数呢?可以在Excel中使用函数,生成随机数. 1.在单元格中输入函数公式=RANDBETWEEN(10,50),其中10,50表示要生成的范围,这样 ...

  • java生成Cron表达式

    java生成Cron表达式

  • 【Java】TimeFormatUtils(时间格式化工具类)

    Java 时间格式化工具类 import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.C ...