读书人

Java获取随机数技术小结

发布时间: 2012-10-20 14:12:48 作者: rapoo

Java获取随机数技术总结
Java获取随机数技术总结

    Random random = new Random();
      3、创建不带种子的Random对象
      有两种方法:
      
      1) Random random = new Random(555L);  2) Random random = new Random();  random.setSeed(555L);

        四、测试
        通过一个例子说明上面的用法
        
        import java.util.Random;  /**  * Java随机数测试  * User: leizhimin  * Date: 2008-11-19 17:52:50  */  public class TestRandomNum {  public static void main(String[] args) {  randomTest();  testNoSeed();  testSeed1();  testSeed2();  }  public static void randomTest() {  System.out.println("--------------test()--------------");  //返回以毫秒为单位的当前时间。  long r1 = System.currentTimeMillis();  //返回带正号的 double 值,大于或等于 0.0,小于 1.0。  double r2 = Math.random();  //通过Random类来获取下一个随机的整数  int r3 = new Random().

        五、综合应用
          下面通过最近写的一个随机数工具类来展示用法:
          
          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、不要研究不重复的随机数,意义不大?

读书人网 >软件架构设计

热点推荐