Random类中实现的随机算法是伪随机,也就是有规则的随机。在进行随机时,随机算法的起源数字称为种子数(seed),在种子数的基础上进行一定的变换,从而产生需要的随机数字。

相同种子数的Random对象,相同次数生成的随机数字是完全相同的。也就是说,两个种子数相同的Random对象,第一次生成的随机数字完全相同,第二次生成的随机数字也完全相同。这点在生成多个随机数字时需要特别注意。

创建Random对象

Random类包含两个构造方法,下面依次进行介绍:

  1. public Random():该构造方法使用一个和当前系统时间对应的相对时间有关的数字作为种子数,然后使用这个种子数构造Random对象。
  2. public Random(long seed):该构造方法可以通过制定一个种子数进行创建。一般用不到。

    Random类中常用方法:

    Random类中的方法比较简单,每个方法的功能也很容易理解。需要说明的是,Random类中各方法生成的随机数字都是均匀分布的,也就是说区间内部的数字生成的几率是均等的。

  3. 生成一个 [i, j) 之间的整数:int num = random.nextInt(j) + i;

  4. 生成一个[0, 1)之间的小数:random.nextDouble() 或者 random.nextFloat()
  5. 生成一个长度为n的字符串:
    1. public String generateRandomString(int length) {
    2. Random random = new SecureRandom();
    3. String ALPHABET = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
    4. StringBuffer returnValue = new StringBuffer(length);
    5. for (int i = 0; i < length; i++) {
    6. returnValue.append(ALPHABET.charAt(random.nextInt(ALPHABET.length())));
    7. }
    8. return returnValue.toString();
    9. }