代码如下:

  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. ListView.MultiChoiceModeListener

    参考:http://www.cnblogs.com/a284628487/p/3460400.html和http://blog.csdn.net/mayingcai1987/article/detai ...

  2. 【Tomcat】java.lang.OutOfMemoryError

    1.Java heap space Heap size 昨天在服务器上面部署项目,之前服务器上面已经有一个项目的了. 然后我再部署一个,上去跑了之后,居然内存溢出了. 好吧,内存溢出就调一下,调了之后 ...

  3. 写一方法用来计算1+2+3+...n,其中n作为参数输入,返回值可以由方法名返回,也可以由参数返回

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  4. BZOJ 1911: [Apio2010]特别行动队( dp + 斜率优化 )

    sum为战斗力的前缀和 dp(x) = max( dp(p)+A*(sumx-sump)2+B*(sumx-sump)+C )(0≤p<x) 然后斜率优化...懒得写下去了... ------- ...

  5. BZOJ 3407: [Usaco2009 Oct]Bessie's Weight Problem 贝茜的体重问题( dp )

    01背包... ----------------------------------------------------------------------- #include<cstdio&g ...

  6. USACO Money Systems Dp 01背包

    一道经典的Dp..01背包 定义dp[i] 为需要构造的数字为i 的所有方法数 一开始的时候是这么想的 for(i = 1; i <= N; ++i){ for(j = 1; j <= V ...

  7. USACO Hamming Codes DFS 构造

    我还是用了很朴素的暴力匹配A了这题,不得不感叹USACO时间放的好宽... /* ID: wushuai2 PROG: hamming LANG: C++ */ //#pragma comment(l ...

  8. c语言‘\0’ ,‘0’, “0” ,0之间的区别

    首先比较一下‘\0’和‘0’的区别.有一个共同点就是它们都是字符,在c语言中,字符是按其所对应的ASCII码来存储的,一个字符占一个字节.请翻开你的ASCII字符集表吧,一般在你的C语言教材的附录上, ...

  9. Chapter 17 Replication 复制

    Chapter 17 Replication 复制 Table of Contents 17.1 Replication Configuration 17.2 Replication Implemen ...

  10. 具体解释EBS接口开发之WIP模块接口

    整体说明 文档目的 本文档针对WIP模块业务功能和接口进行分析和研究,对採用并发请求方式和调用API方式分别进行介绍 内容 WIP模块经常使用标准表简单介绍 WIP事物处理组成 WIP相关业务流程 W ...