java随机数总结

一、Java随机数的产生方式

在Java中,随机数的概念从广义上将,有三种。
1、通过System.currentTimeMillis()来获取一个当前时间毫秒数的long型数字。
2、通过Math.random()返回一个0到1之间的double值。
3、通过Random类来产生一个随机数,这个是专业的Random工具类,功能强大。
二、Random类使用说明
1、带种子与不带种子的区别
Random类使用的根本是策略分带种子和不带种子的Random的实例。
通俗说,两者的区别是:
带种子的,每次运行生成的结果都是一样的。
不带种子的,每次运行生成的都是随机的,没有规律可言。
2、创建不带种子的Random对象
Random random = new Random();
3、创建带种子的Random对象
有两种方法:
1) Random random = new Random(555L);
2) Random random = new Random();
random.setSeed(555L);
例如:
public static String getRandomString(int length) { //length表示生成字符串的长度
    String base = "abcdefghijklmnopqrstuvwxyz0123456789";   
    Random random = new Random();   
    StringBuffer sb = new StringBuffer();   
    for (int i = 0; i < length; i++) {   
        int number = random.nextInt(base.length());   
        sb.append(base.charAt(number));   
    }   
    return sb.toString();   
 }  
综合运用:
import java.util.Random;

public class TestDemo01 {
	/**
	 * 随机数、随即字符串工具
	 */
	public static final String allChar = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
	public static final String letterChar = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
	public static final String numberChar = "0123456789";

	/**
	 * 返回一个定长的随机字符串(只包含大小写字母、数字)
	 * 
	 * @param length随机字符串长度
	 * @return 随机字符串
	 */
	public static String generateString(int length) {
		StringBuffer sb = new StringBuffer();
		Random random = new Random();
		for (int i = 0; i < length; i++) {
			sb.append(allChar.charAt(random.nextInt(allChar.length())));
		}
		return sb.toString();
	}

	/**
	 * 返回一个定长的随机纯字母字符串(只包含大小写字母)
	 * 
	 * @param length          随机字符串长度
	 * @return 随机字符串
	 */
	public static String generateMixString(int length) {
		StringBuffer sb = new StringBuffer();
		Random random = new Random();
		for (int i = 0; i < length; i++) {
			sb.append(allChar.charAt(random.nextInt(letterChar.length())));
		}
		return sb.toString();
	}

	/**
	 * 返回一个定长的随机纯小写字母字符串(只包含大小写字母)
	 * 
	 * @param length       随机字符串长度
	 * @return 随机字符串
	 */
	public static String generateLowerString(int length) {
		return generateMixString(length).toLowerCase();
	}

	/**
	 * 返回一个定长的随机纯大写字母字符串(只包含大小写字母)
	 * 
	 * @param length
	 *            随机字符串长度
	 * @return 随机字符串
	 */
	public static String generateUpperString(int length) {
		return generateMixString(length).toUpperCase();
	}

	/**
	 * 生成一个定长的纯0字符串
	 * 
	 * @param length
	 *            字符串长度
	 * @return 纯0字符串
	 */
	public static String generateZeroString(int length) {
		StringBuffer sb = new StringBuffer();
		for (int i = 0; i < length; i++) {
			sb.append('0');
		}
		return sb.toString();
	}

	/**
	 * 根据数字生成一个定长的字符串,长度不够前面补0
	 * 
	 * @param num
	 *            数字
	 * @param fixdlenth
	 *            字符串长度
	 * @return 定长的字符串
	 */
	public static String toFixdLengthString(long num, int fixdlenth) {
		StringBuffer sb = new StringBuffer();
		String strNum = String.valueOf(num);
		if (fixdlenth - strNum.length() >= 0) {
			sb.append(generateZeroString(fixdlenth - strNum.length()));
		} else {
			throw new RuntimeException("将数字" + num + "转化为长度为" + fixdlenth
					+ "的字符串发生异常!");
		}
		sb.append(strNum);
		return sb.toString();
	}

	public static void main(String[] args) {
		System.out.println(generateString(8));
		System.out.println(generateMixString(8));
		System.out.println(generateLowerString(8));
		System.out.println(generateUpperString(8));
		System.out.println(generateZeroString(8));
		System.out.println(toFixdLengthString(123, 8));
	}
}




版权声明:本文为博主原创文章,未经博主允许不得转载。

### Java生成随机数的方法 在 Java 编程语言中,有多种方法可以生成随机数。以下是几种常见的实现方式及其特点: #### 1. 使用 `Math.random()` 方法 `Math.random()` 是一种简单易用的方式来生成随机数。该方法返回一个大于等于 0.0 且小于 1.0 的双精度浮点数[^1]。如果需要生成指定范围内的整数,则可以通过简单的算术运算完成。 ```java public class MathRandomExample { public static void main(String[] args) { double randomValue = Math.random(); int randomNumberBetween0And9 = (int)(Math.random() * 10); System.out.println("随机浮点数:" + randomValue); System.out.println("0 到 9 的随机整数:" + randomNumberBetween0And9); } } ``` 此方法适用于不需要高度随机性的场景,因为它基于固定的种子值[^1]。 --- #### 2. 使用 `Random` 类 `Random` 类位于 `java.util` 包中,提供了更灵活的随机数生成功能。它可以生成各种类型的随机数,包括整数、浮点数、布尔值等[^2]。 ##### a. 创建 `Random` 实例并生成随机数 通过实例化 `Random` 对象,可以调用其多个方法来生成不同类型的随机数[^3]。 ```java import java.util.Random; public class RandomClassExample { public static void main(String[] args) { Random random = new Random(); // 生成介于 [0, n) 范围内的随机整数 int randomInt = random.nextInt(10); // 生成随机 boolean 值 boolean randomBoolean = random.nextBoolean(); // 生成随机 float 和 double 数字 float randomFloat = random.nextFloat(); double randomDouble = random.nextDouble(); System.out.println("随机整数:" + randomInt); System.out.println("随机布尔值:" + randomBoolean); System.out.println("随机浮点数:" + randomFloat); System.out.println("随机双精度数:" + randomDouble); } } ``` ##### b. 不带参数的 `nextInt()` 方法 如果不传递任何参数给 `nextInt()` 方法,它将返回一个完整的 32 位随机整数值(可能为负数)。这种方法适合需要整个整型范围的情况[^5]。 ```java import java.util.Random; public class NextIntNoParameter { public static void main(String[] args) { Random random = new Random(); int fullRangeRandomInt = random.nextInt(); System.out.println("全范围随机整数:" + fullRangeRandomInt); } } ``` --- #### 3. 使用 `SecureRandom` 类 对于安全性要求较高的应用(如密码学),推荐使用 `SecureRandom` 类代替普通的 `Random` 类。虽然性能稍逊,但它能够提供更强的安全性和不可预测性[^4]。 ```java import java.security.SecureRandom; public class SecureRandomExample { public static void main(String[] args) { SecureRandom secureRandom = new SecureRandom(); int secureRandomNumber = secureRandom.nextInt(100); System.out.println("安全随机数:" + secureRandomNumber); } } ``` --- #### 总结 每种方法都有各自的适用场合: - 如果只需要快速简便地生成一些基本随机数,可以选择 `Math.random()` 或者 `Random` 类。 - 当涉及敏感数据处理时,则应优先考虑采用 `SecureRandom` 来增强系统的健壮性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值