随机数Math.random()方法

JAVA实际开发中,随机数的使用是很普遍的,所以要掌握生成随机数的操作。在Java中主要提供了两种生成随机数的方式,分别为调用Math 类的random()方法生成随机数和调用Random类生成各种数据类型的随机数。

在Math类中存在一个random()方法,用于产生随机数字。这个方法 默认生成大于等于0.0且小于1.0的double型随机数,即0<=Math.random() <1.0。虽然Math.random()方法只可以产生0~1之间的double型数字,但只 要在Math.random()语句上稍加处理,就可以使用这个方法产生任意范围 的随机数,如图所示。

使用random()方法示意图
使用random()方法示意图

为了更好地解释这种产生随机数的方式,下面举例说明。

【例】在项目中创建MathRondom类,在类中编写GetEvenNum() 方法产生两数之间的随机数,并在主方法中输出这个随机数。

public class MathRondom {
	/**
	 * 定义产生偶数的方法
	 * @param num1 起始范围参数
	 * @param num2 终止范围参数
	 * @return 随即的范围内偶数
	 */
	public static int GetEvenNum(double num1, double num2) {
		// 产生num1~num2之间的随机数
		int s = (int) num1 + (int) (Math.random() * (num2 - num1)); 
		if (s % 2 == 0) { // 判断随机数是否为偶数
			return s; // 返回
		} else
			// 如果是奇数
			return s + 1; // 将结果加1后返回
	}
	
	public static void main(String[] args) {
		// 调用产生随机数方法
		System.out.println("任意一个2~32之间的偶数:" + GetEvenNum(2, 32));
	}
}

在Eclipse中运行本实例,结果如图所示。

随机产生2~32之间的偶数
随机产生2~32之间的偶数

本实例每次运行时结果都不相同,这就实现了随机产生数据的功 能,并且每次产生的值都是偶数。为了实现这个功能,这里定义了一个 方法GetEvenNum(),该方法的参数分别为产生随机数字的上限与下限。 因为m+(int)(Math.random()*n)语句可以获取m~m+n之间的随机数,所 以“2+(int)(Math.random()*(32-2));”这个表达式就可以求出2~32之间的随 机数。当获取到这个区间的随机数以后需要判断这个数字是否为偶数 时,对该数字做对2取余操作即可。如果该数字为奇数,将该奇数加1也 可以返回偶数。

使用Math类的random()方法也可以随机生成字符,可以使用如下代 码生成a~z之间的字符。

(char)('a'+Math.random()*('z'-'a'+1));

通过上述表达式可以求出更多的随机字符,如A~Z之间的随机字 符。进而推理出,若想生成任意两个字符之间的随机字符,可以使用以 下语句实现:

(char)(cha1+Math.random()*(cha2-cha1+1));

在这里,可以将这个表达式设计为一个方法,参数设置为随机产生 字符的上限与下限。下面举例说明。

【例】在项目中创建MathRandomChar类,在类中编写 GetRandomChar()方法产生随机字符,并在主方法中输出该字符。

public class MathRandomChar {
	// 定义获取任意字符之间的随机字符
	public static char GetRandomChar(char cha1, char cha2) {
		return (char) (cha1 + Math.random() * (cha2 - cha1 + 1));
	}
	
	public static void main(String[] args) {
		// 获取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'));
	}
}
获取任意区间的随机字符
获取任意区间的随机字符

注意:random()方法返回的值实际上是伪随机数,它通过复杂的运算而得 到一系列的数。该方法是通过当前时间作为随机数生成器的参数,所 以每次执行程序都会产生不同的随机数。

发表评论