代码如下:

  1. package com.zuidaima.core.util;
  2. import java.util.Random;
  3. public class RandomUtil {
  4. public static final String ALLCHAR = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
  5. public static final String LETTERCHAR = "abcdefghijkllmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
  6. public static final String NUMBERCHAR = "0123456789";
  7. /**
  8. * 返回一个定长的随机字符串(只包含大小写字母、数字)
  9. *
  10. * @param length
  11. *            随机字符串长度
  12. * @return 随机字符串
  13. */
  14. public static String generateString(int length) {
  15. StringBuffer sb = new StringBuffer();
  16. Random random = new Random();
  17. for (int i = 0; i < length; i++) {
  18. sb.append(ALLCHAR.charAt(random.nextInt(ALLCHAR.length())));
  19. }
  20. return sb.toString();
  21. }
  22. /**
  23. * 返回一个定长的随机纯字母字符串(只包含大小写字母)
  24. *
  25. * @param length
  26. *            随机字符串长度
  27. * @return 随机字符串
  28. */
  29. public static String generateMixString(int length) {
  30. StringBuffer sb = new StringBuffer();
  31. Random random = new Random();
  32. for (int i = 0; i < length; i++) {
  33. sb.append(ALLCHAR.charAt(random.nextInt(LETTERCHAR.length())));
  34. }
  35. return sb.toString();
  36. }
  37. /**
  38. * 返回一个定长的随机纯大写字母字符串(只包含大小写字母)
  39. *
  40. * @param length
  41. *            随机字符串长度
  42. * @return 随机字符串
  43. */
  44. public static String generateLowerString(int length) {
  45. return generateMixString(length).toLowerCase();
  46. }
  47. /**
  48. * 返回一个定长的随机纯小写字母字符串(只包含大小写字母)
  49. *
  50. * @param length
  51. *            随机字符串长度
  52. * @return 随机字符串
  53. */
  54. public static String generateUpperString(int length) {
  55. return generateMixString(length).toUpperCase();
  56. }
  57. /**
  58. * 生成一个定长的纯0字符串
  59. *
  60. * @param length
  61. *            字符串长度
  62. * @return 纯0字符串
  63. */
  64. public static String generateZeroString(int length) {
  65. StringBuffer sb = new StringBuffer();
  66. for (int i = 0; i < length; i++) {
  67. sb.append('0');
  68. }
  69. return sb.toString();
  70. }
  71. /**
  72. * 根据数字生成一个定长的字符串,长度不够前面补0
  73. *
  74. * @param num
  75. *            数字
  76. * @param fixdlenth
  77. *            字符串长度
  78. * @return 定长的字符串
  79. */
  80. public static String toFixdLengthString(long num, int fixdlenth) {
  81. StringBuffer sb = new StringBuffer();
  82. String strNum = String.valueOf(num);
  83. if (fixdlenth - strNum.length() >= 0) {
  84. sb.append(generateZeroString(fixdlenth - strNum.length()));
  85. } else {
  86. throw new RuntimeException("将数字" + num + "转化为长度为" + fixdlenth
  87. + "的字符串发生异常!");
  88. }
  89. sb.append(strNum);
  90. return sb.toString();
  91. }
  92. /**
  93. * 每次生成的len位数都不相同
  94. *
  95. * @param param
  96. * @return 定长的数字
  97. */
  98. public static int getNotSimple(int[] param, int len) {
  99. Random rand = new Random();
  100. for (int i = param.length; i > 1; i--) {
  101. int index = rand.nextInt(i);
  102. int tmp = param[index];
  103. param[index] = param[i - 1];
  104. param[i - 1] = tmp;
  105. }
  106. int result = 0;
  107. for (int i = 0; i < len; i++) {
  108. result = result * 10 + param[i];
  109. }
  110. return result;
  111. }
  112. public static void main(String[] args) {
  113. System.out.println("返回一个定长的随机字符串(只包含大小写字母、数字):" + generateString(10));
  114. System.out
  115. .println("返回一个定长的随机纯字母字符串(只包含大小写字母):" + generateMixString(10));
  116. System.out.println("返回一个定长的随机纯大写字母字符串(只包含大小写字母):"
  117. + generateLowerString(10));
  118. System.out.println("返回一个定长的随机纯小写字母字符串(只包含大小写字母):"
  119. + generateUpperString(10));
  120. System.out.println("生成一个定长的纯0字符串:" + generateZeroString(10));
  121. System.out.println("根据数字生成一个定长的字符串,长度不够前面补0:"
  122. + toFixdLengthString(123, 10));
  123. int[] in = { 1, 2, 3, 4, 5, 6, 7 };
  124. System.out.println("每次生成的len位数都不相同:" + getNotSimple(in, 3));
  125. }
  126. }

史上最全的java随机数/字符串生成算法(转)的更多相关文章

  1. 史上最全的java随机数生成算法分享(转)

    这篇文章主要介绍了史上最全的java随机数生成算法,我分享一个最全的随机数的生成算法,最代码的找回密码的随机数就是用的这个方法 String password = RandomUtil.generat ...

  2. 史上最全的 Java 新手问题汇总

    史上最全的 Java 新手问题汇总   Java是目前最流行的编程语言之一——它可以用来编写Windows程序或者是Web应用,移动应用,网络程序,消费电子产品,机顶盒设备,它无处不在. 有超过30亿 ...

  3. 史上最全阿里 Java 面试题总结

    以下为大家整理了阿里巴巴史上最全的 Java 面试题,涉及大量 Java 面试知识点和相关试题. JAVA基础 JAVA中的几种基本数据类型是什么,各自占用多少字节. String类能被继承吗,为什么 ...

  4. 史上最全的Java高级技术点,全是Java高级进阶技术,几乎包含了Java后端的所有知识点

    史上最全的Java高级技术点,全是Java高级进阶技术,几乎包含了Java后端的所有知识点 1

  5. 史上最全最新java面试题合集二(附答案)

    下面小编整理了本套java面试题全集,分享给大家,希望对大家的java学习和就业面试有所帮助. 51.类ExampleA继承Exception,类ExampleB继承ExampleA. 有如下代码片断 ...

  6. 告别编码5分钟,命名2小时!史上最全的Java命名规范参考!

    简洁清爽的代码风格应该是大多数工程师所期待的.在工作中笔者常常因为起名字而纠结,夸张点可以说是编程5分钟,命名两小时!究竟为什么命名成为了工作中的拦路虎. 每个公司都有不同的标准,目的是为了保持统一, ...

  7. 史上最全的Java命名规范[转]

    每个公司都有不同的标准,目的是为了保持统一,减少沟通成本,提升团队研发效能.所以本文中是笔者结合阿里巴巴开发规范,以及工作中的见闻针对Java领域相关命名进行整理和总结,仅供参考. 一.Java中的命 ...

  8. 史上最全最新Java面试题合集一(附答案)

    下面小编整理了本套java面试题全集,分享给大家,希望对大家的java学习和就业面试有所帮助. 1.面向对象的特征有哪些方面? 答:面向对象的特征主要有以下几个方面: 抽象:抽象是将一类对象的共同特征 ...

  9. 史上最全的java随机数生成算法[转载]

    package com.zuidaima.core.util; import java.util.Random; public class RandomUtil { public static fin ...

随机推荐

  1. iOS_第3方类库_BlurAlertView_GPUImage

    最终效果图: 先加入GPUImage.framework 导入BlurAlertView的类声明和类实现 // // BlurAlertView.h // 特效弹出框 // // Created by ...

  2. Android:OptionMenu

    MainActivity: package com.example.optionmenu; import android.content.Intent; import android.os.Bundl ...

  3. (Problem 10)Summation of primes

    The sum of the primes below 10 is 2 + 3 + 5 + 7 = 17. Find the sum of all the primes below two milli ...

  4. c语言指针数组与数组指针

    一.指针数组和数组指针的内存布局初学者总是分不出指针数组与数组指针的区别.其实很好理解:指针数组:首先它是一个数组,数组的元素都是指针,数组占多少个字节由数组本身决定.它是“储存指针的数组”的简称.数 ...

  5. atlas z 轴

    问题源自一个帖子,因为上传的图比较多,就另开了这个贴写下自己的试验结果,原帖在下面链接中 http://game.ceeger.com/forum/read.php?tid=8911#info NGU ...

  6. Android有效解决加载大图片时内存溢出的问题

    首先,您需要了解一下,图片占用内存的计算方法,传送门:http://blog.csdn.net/scry5566/article/details/11568751 尽量不要使用setImageBitm ...

  7. 获取java byte的无符号数值

    byte a = (byte)234; System.out.println(a); 上面的代码,结果是-22,因为java中byte是有符号的,byte范围是-128~127. 如果想输出234,该 ...

  8. [置顶] Android自定义控件大全

    1,自定义Edittext, TextView,带底线的Edittext, TextView 2.自定义圆形ImageView,圆角ImageView 3,下拉刷新LinearLayout 4,多点触 ...

  9. android的fragment基本介绍

    可以分为下面的几部分: 使用支持库 创建一个Fragment 创建一个动态UI 多个Fragment之间的通信 1.使用支持库 如果您的应用需要运行在3.0及以上的版本,可以忽略这部分内容. 如果您的 ...

  10. BZOJ 2743: [HEOI2012]采花( 离线 + BIT )

    处理出每个数下一个出现的位置, 然后按左端点排序回答询问.处理当前数去除的影响 ------------------------------------------------------------ ...