首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 计算机考试 > 认证考试 > JAVA认证 >

Java随机数总结(2)

2008-12-01 
Java提供了最基本的工具,帮助开发者实现随机数的产生。

五、综合应用
  下面通过最近写的一个随机数工具类来展示用法:
  import java.util.Random;
  /**
  * 随机数、随即字符串工具
  * User: leizhimin
  * Date: 2008-11-19 9:43:09
  */
  public class RandomUtils {
  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(15));
  System.out.println(generateMixString(15));
  System.out.println(generateLowerString(15));
  System.out.println(generateUpperString(15));
  System.out.println(generateZeroString(15));
  System.out.println(toFixdLengthString(123, 15));
  System.out.println(toFixdLengthString(123L, 15));
  }
  }
  运行结果:
  vWMBPiNbzfGCpHG
  23hyraHdJkKPwMv
  tigowetbwkm1nde
  BPZ1KNEJPHB115N
  000000000000000
  000000000000123
  000000000000123
  Process finished with exit code 0
  六、总结
  1、随机数很常用,在Java有三种产生方式,以Random随机数的使用最为复杂。
  2、Random类对象有是否带种子之分,带种子的只要种子相同,多次运行,生成随机数的结果总是那样。
  3、带种子随机数的带种子的对象创建方式有两种,效果一样。但是带种子的随机数用处似乎不大。
  4、Random的功能涵盖了Math.random()的功能。
  5、可以通过随机数去做实现随机字符串等复杂的随机数据。
  6、不要研究不重复的随机数,意义不大。

热点排行