Java中的随机数

在Java中主要提供了两种方式产生随机数,分别调用Math类的random()方法和Random类提供的产生各种数据类型随机数的方法。

 

一、Math.random()方法

在Math类中存在一个random()方法,用于产生随机数字,这个方法默认生成大于等于0.0小于1.0的double型随机数,通过以下示例来说明这个方法:

public class MathRandom {
	/*
	 * 定义产生偶数的方法
	 * @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;
		}
	}
	
	public static void main(String args[]) {
		System.out.println("任意生成一个1~31之间的偶数:"+GetEvenNum(1, 31));
	}
}
/*输出结果如下:
任意生成一个1~31之间的偶数:12
*/

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

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

如下代码可以生成A~Z之间的字符:

(char)('A'+Math.random()*('Z'-'A'+1));

通过以下示例,对生成字符的方法进行说明:

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'));
	}
}
/*输出结果如下:
任意小写字符:m
任意大写字符:Y
0到9任意数字字符:1
*/

二、Random类

除了Math类中的random()方法可以获取随机数之外,Java还提供了一种可以获取随机数的方式,那就是java.util.Random类,语法如下:

Random r = new Random();

//r是指Random对象

同时也可以在实例化Random类对象时,设置随机数生成器的种子,语法如下:

扫描二维码关注公众号,回复: 9573675 查看本文章
Random r = new Random(seedValue)

//r:Random类对象
//seedValue:随机数生成器的种子

在Random类中提供了获取各种数据类型随机数的方法,大致如下:

1、public int nextInt():返回一个随机整数

2、public int nextInt(int n):返回大于等于0小于n的随机整数

3、public long nextLong():返回一个随机长整型

4、public boolean nexBoolean():返回一个随机布尔型值

5、public float nextFloat():返回一个随机浮点型值

6、public double nextDouble():返回一个随机双精度型值

7、public double nextGaussian():返回一个概率密度为高斯分布的双精度值

通过以下示例对上述方法进行说明:

import java.util.Random;

public class RandomDemo {
	public static void main(String args[]) {
		//实例化一个Random类
		Random r = new Random();
		//随机产生一个整数
		System.out.println("随机产生一个整数:"+r.nextInt());
		//随机产生一个大于等于0小于9的整数
		System.out.println("随机产生一个大于等于0小于9的整数:"+r.nextInt(9));
		//随机产生一个布尔型的值
		System.out.println("随机产生一个布尔型的值:"+r.nextBoolean());
		//随机产生一个双精度型的值
		System.out.println("随机产生一个双精度型的值:"+r.nextDouble());
		//随机产生一个浮点型的值
		System.out.println("随机产生一个浮点型的值:"+r.nextFloat());
		//随机产生一个概率密度为高斯分布的双精度值
		System.out.println("随机产生一个概率密度为高斯分布的双精度值:"+r.nextGaussian());
	}
}
/*输出结果如下:
随机产生一个整数:1677372325
随机产生一个大于等于0小于9的整数:4
随机产生一个布尔型的值:false
随机产生一个双精度型的值:0.247073891426126
随机产生一个浮点型的值:0.34881586
随机产生一个概率密度为高斯分布的双精度值:0.8853585427556385
*/
发布了61 篇原创文章 · 获赞 1 · 访问量 1352

猜你喜欢

转载自blog.csdn.net/qq_29440983/article/details/103468898