📜  java 随机唯一数 - Java (1)

📅  最后修改于: 2023-12-03 15:31:34.499000             🧑  作者: Mango

Java 随机唯一数

在 Java 中,我们可以通过多种方式来生成随机唯一数。下面介绍其中的几种方法。

方法一:使用 UUID

UUID(Universally Unique Identifier)是一种用于标识信息的唯一 ID。Java 中提供了 UUID 类用于生成 UUID。

import java.util.UUID;

public class RandomUniqueNumberGenerator {
   public static void main(String[] args) {
      UUID uuid = UUID.randomUUID();
      String randomUUIDString = uuid.toString();
      System.out.println("Random UUID String = " + randomUUIDString);
   }
}

输出结果类似于:

Random UUID String = 1b9df393-ebb6-4b48-9f78-5d5a5f5d5b5f
方法二:使用 SecureRandom

SecureRandom 是具有强加密码学安全性的随机数生成器。可以使用 SecureRandom 生成随机数,再将其转换为字符串。

import java.security.SecureRandom;
import java.math.BigInteger;

public class RandomUniqueNumberGenerator {
   public static void main(String[] args) {
      SecureRandom random = new SecureRandom();
      String randomString = new BigInteger(130, random).toString(32);
      System.out.println("Random String = " + randomString);
   }
}

输出结果类似于:

Random String = 2hiyraizn9ns6gmbzc6c7qm6jh4n6bvt2c3q3qzzjd01e
方法三:使用 RandomStringUtils

Apache Commons Lang 是一个常用的 Java 库,其中包含了许多实用的方法。其中的 RandomStringUtils 类提供了随机生成字符串的功能。

import org.apache.commons.lang3.RandomStringUtils;

public class RandomUniqueNumberGenerator {
   public static void main(String[] args) {
      String randomString = RandomStringUtils.randomAlphanumeric(8);
      System.out.println("Random String = " + randomString);
   }
}

输出结果类似于:

Random String = j7vrRQtD
方法四:使用 ThreadLocalRandom

ThreadLocalRandom 是 Java 7 中新增的随机数生成器。使用该类可以生成高效的随机数。

import java.util.concurrent.ThreadLocalRandom;

public class RandomUniqueNumberGenerator {
   public static void main(String[] args) {
      int randomInt = ThreadLocalRandom.current().nextInt();
      System.out.println("Random Int = " + randomInt);
   }
}

输出结果类似于:

Random Int = -1196897915
方法五:使用 SecureRandom + MessageDigest

这一方法是结合了前两种方法,可以生成更加随机和安全的唯一数。

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.security.SecureRandom;

public class RandomUniqueNumberGenerator {
    public static void main(String[] args) throws NoSuchAlgorithmException {
        SecureRandom random = SecureRandom.getInstance("SHA1PRNG");
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < 16; i++) {
            sb.append(Integer.toString(random.nextInt()));
        }
        MessageDigest messageDigest = MessageDigest.getInstance("SHA-256");
        byte[] hashValue = messageDigest.digest(sb.toString().getBytes());
        StringBuilder sb2 = new StringBuilder();
        for (int i = 0; i < hashValue.length; i++) {
            sb2.append(Integer.toString((hashValue[i] & 0xff) + 0x100, 16).substring(1));
        }
        String randomString = sb2.toString();
        System.out.println("Random String = " + randomString);
    }
}

输出结果类似于:

Random String = a5e5c84cda6759d2502d914e13c0a47f797809e876acc8e99e378c721fcd0e1a

以上就是 Java 中几种生成随机唯一数的方法。根据需求可以选择适合自己的方法。