JAVA ·

JAVA 如何生成随机字符串

在开发的过程中,经常会有需要获取随机数、随机字符的需求,例如一些随机验证码,随机字符串签名,使用场景还是很广泛的。

JAVA中有两个生成随机数的方法

第一:java.lang.Math

直接使用java.lang.Math类中的Math.random()方法获取一个[0.0,1.0)之间的一个double类型的随机数

for (int i = 0; i < 10; i++) {
      int num = (int) ((Math.random()) * 3);
      System.out.print(num + " ");
}
// 输出结果
1 2 2 2 1 2 1 1 1 0

看输入结果,就可以发现均随机分布在[0,3)之间,在使用Math.Random()的时候需要注意的地方时该函数是返回double类型的值,所以在要赋值给其他类型的变量的时候注意需要进行塑形转换。

第二:java.util.Random

使用java.util.Random类,创建一个随机数发生器,然后再生成随机数

package com.cn.xzbms.test;

import java.security.SecureRandom;
import java.util.Random;

/**
 * JAVA 生成随机字符串
 * @author payne
 * @date 2017-06-21 23:01:30
 * @url http://localhost/yixiema
 */
public class randomTest {
	public static final String SOURCES = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890";

    public static void main(String[] args) {
    	randomTest rs = new randomTest();
        System.out.println(rs.generateString(new Random(),SOURCES,10));
        System.out.println(rs.generateString(new Random(),SOURCES,10));
        System.out.println(rs.generateString(new SecureRandom(),SOURCES,15));
        System.out.println(rs.generateString(new SecureRandom(),SOURCES,15));
    }

    /**
     * 创建随机字符串.
     *
     * @param random 随机数器.
     * @param characters 生成随机字符串取数合集.
     * @param length 生成的字符串长度
     * @return
     */
    public String generateString(Random random, String characters, int length) {
        char[] text = new char[length];
        for (int i = 0; i < length; i++) {
            text[i] = characters.charAt(random.nextInt(characters.length()));
        }
        return new String(text);
    }

}
// 输出结果
rJdFSHbG9F
OdpuVvyFQm
ER8u6x5ivFk6oiQ
6XRBNHPRjMMBmfk

参与评论