Java案例如何生成随机数?

wen java案例 10

本文目录导读:

Java案例如何生成随机数?

  1. 使用 Math.random() 方法
  2. 使用 Random 类
  3. 使用 ThreadLocalRandom (推荐用于多线程)
  4. 使用 SecureRandom (加密安全)
  5. 完整示例:生成验证码
  6. 选择建议

在Java中生成随机数有多种方法,以下是几种常用方式:

使用 Math.random() 方法

// 生成 [0.0, 1.0) 之间的随机double
double randomValue = Math.random();
// 生成 [0, 100) 之间的随机整数
int randomInt = (int)(Math.random() * 100);  // 0-99
// 生成 [min, max] 之间的随机整数
int min = 10, max = 50;
int randomInRange = (int)(Math.random() * (max - min + 1)) + min;  // 10-50

使用 Random 类

import java.util.Random;
Random random = new Random();
// 生成各种类型的随机数
int intRandom = random.nextInt();           // 任何整数
int intBound = random.nextInt(100);         // 0-99
long longRandom = random.nextLong();        // 任何长整数
float floatRandom = random.nextFloat();     // [0.0, 1.0)
double doubleRandom = random.nextDouble();  // [0.0, 1.0)
boolean booleanRandom = random.nextBoolean(); // true/false
// 生成指定范围 [min, max] 的随机数
int min = 10, max = 50;
int rangeRandom = random.nextInt(max - min + 1) + min;

使用 ThreadLocalRandom (推荐用于多线程)

import java.util.concurrent.ThreadLocalRandom;
// 生成随机数
int intRandom = ThreadLocalRandom.current().nextInt(100);       // 0-99
int intRange = ThreadLocalRandom.current().nextInt(10, 50);     // 10-49
double doubleRange = ThreadLocalRandom.current().nextDouble(0.5, 10.5);
// 适用于多线程环境,性能更好
public class RandomDemo {
    public static void main(String[] args) {
        ThreadLocalRandom random = ThreadLocalRandom.current();
        for (int i = 0; i < 10; i++) {
            System.out.println(random.nextInt(1, 100));  // 1-99
        }
    }
}

使用 SecureRandom (加密安全)

import java.security.SecureRandom;
SecureRandom secureRandom = new SecureRandom();
// 生成加密安全的随机数
byte[] bytes = new byte[16];
secureRandom.nextBytes(bytes);
int secureInt = secureRandom.nextInt(100);
int secureRange = secureRandom.nextInt(10, 100);

完整示例:生成验证码

import java.util.Random;
public class RandomDemo {
    public static void main(String[] args) {
        // 生成6位数字验证码
        Random random = new Random();
        StringBuilder code = new StringBuilder();
        for (int i = 0; i < 6; i++) {
            code.append(random.nextInt(10));
        }
        System.out.println("数字验证码: " + code);
        // 生成包含字母和数字的验证码
        String chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
        StringBuilder mixedCode = new StringBuilder();
        for (int i = 0; i < 6; i++) {
            mixedCode.append(chars.charAt(random.nextInt(chars.length())));
        }
        System.out.println("混合验证码: " + mixedCode);
    }
}

选择建议

方法 适用场景 特点
Math.random() 简单快速 只能生成double
Random 常规用途 功能全面,线程安全
ThreadLocalRandom 多线程环境 性能最好
SecureRandom 安全场景 加密级别,速度较慢

推荐:大多数情况下使用 Random 类即可,在多线程环境下使用 ThreadLocalRandom

抱歉,评论功能暂时关闭!