Java获取随机数
一、Java随机数的产生方式
在Java中,随机数的概念从广义上将,有三种。
1、通过System.currentTimeMillis()来获取一个当前时间毫秒数的long型数字。
2、通过Math.random()返回一个0到1之间的double值。
3、通过Random类来产生一个随机数,这个是专业的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();
public class RandomUtilTest { 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(); } /** * 根据数字生成一个定长的字符串,长度不够前面补0 * * @param num * 数字 * @param fixdlenth * 字符串长度 * @return 定长的字符串 */ public static String toFixdLengthString(int 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(6)); //System.out.println(generateMixString(6)); //System.out.println(generateLowerString(6)); //System.out.println(generateUpperString(6)); //System.out.println(generateZeroString(6)); //System.out.println(toFixdLengthString(123, 15)); //System.out.println(toFixdLengthString(123L, 15)); }