代码如下:

  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. Threejs 官网 - Three.js 的图形用户界面工具(GUI Tools with Three.js)

    Threejs 官网 - Three.js 的图形用户界面工具(GUI Tools with Three.js) 太阳火神的漂亮人生 (http://blog.csdn.net/opengl_es) ...

  2. java:转换时间格式为String

    SimpleDateFormat format = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss"); Date curDate = new ...

  3. PHPExcel用法

    <?php //下面是总结的几个使用方法 include 'PHPExcel.php'; include 'PHPExcel/Writer/Excel2007.php'; //或者include ...

  4. Google Code Jam Round 1C 2015 Problem A. Brattleship

    Problem You're about to play a simplified "battleship" game with your little brother. The ...

  5. UVALive 6467 Strahler Order 拓扑排序

    这题是今天下午BNU SUMMER TRAINING的C题 是队友给的解题思路,用拓扑排序然后就可以了 最后是3A 其中两次RE竟然是因为: scanf("%d",mm); ORZ ...

  6. 关于PsCreateSystemThread函数

    研究了1天这个...MSDN说的不是很清楚NTSTATUS PsCreateSystemThread(  _Out_      PHANDLE ThreadHandle,  _In_       UL ...

  7. phpMyAdmin 手动输入数据库服务器IP

    1 在phpMyAdmin安装目录下查找config.inc.php,如没有则拷贝config.sample.inc.php为config.inc.php 2 修改config.inc.php,加入$ ...

  8. Scriptcase在线试用开发环境

    现在,你可以通过浏览器在线试用的方式,体验Scriptcase的高效快速开发方式. 只需要有上网环境就可以使用: 兼容几乎所有的浏览器(IE.Firefox.Chrome.Opera……): 客户端无 ...

  9. shell脚本中每次读取文件的一行

    写法一: #!/bin/bash while read linedo      echo $line     #这里可根据实际用途变化 done < file          #需要读取的文件 ...

  10. shu_1548 悟空问题(大哥,主妖怪抓走的朋友!)

    http://202.121.199.212/JudgeOnline/problem.php?cid=1078&pid=17 分析:  直接暴力了.. . 代码: #include <s ...