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

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

史上最全的java随机数生成算法[转载]的相关文章

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

Java是目前最流行的编程语言之一——它可以用来编写Windows程序或者是Web应用,移动应用,网络程序,消费电子产品,机顶盒设备,它无处不在. 有超过30亿的设备是运行在Java之上的.根据Oracle的统计数据,光是使用中的Java Card就有有50亿. 超过900万程序员选择使用Java进行开发,它是最受开发人员欢迎的语言,同时也是最流行的开发平台. 本文为那些准Java程序员们准备了一系列广为流传的Java最佳编程实践 优先返回空集合而非null 如果程序要返回一个不包含任何值的集合

史上最全的JAVA面试总结

数据库类 作为后端开发,可以说数据库是重之又重.提问的比例也相当之大.所以这里先记录下这个. 如何快速导入10万条数据到MySQL数据库? 这个应该当时很紧张,居然半天说不出来.其实当时心里有一个答案了,就是存储过程.但是因为平常开发基本上没用到过这东西,所以都不敢说了.. 网上还有有一些答案说批处理,通过sql文件进行导入等等,这个有时间可以去验证一番. mysql主从配置时,如果在主服务器修改某个数据,然后在从服务器中读取,因为延迟或者宕机的问题,导致没有读到数据,应该怎么办? 这个面试官很

史上最全的Java&amp;Android面试题搜集整理

最近在忙着准备面试,所以从全网搜集了一下java和android相关的面试题目,应该能够包含80%以上的试题吧~如果大家还有一些比较全面优质的题目资源,欢迎告知,我会继续补充进来,以便于更多同学可以从中获益. android性能优化系列 http://www.trinea.cn/android/performance/ 2016JAVA与Android面试题整理 http://www.nowcoder.com/discuss/3244 百度的android面试总结分析 http://blog.c

史上最全的随机数生成java算法

原文:史上最全的随机数生成java算法 源代码下载地址:http://www.zuidaima.com/share/1585762703215616.htm 前段时间有其他牛人分享的随机数激起了我分享随机数的想法 java随机字符补充版 [maven+junit] java生成指定为位数的随机密码 我分享一个最全的随机数的生成算法,最代码的找回密码的随机数就是用的这个方法: 1 String password = RandomUtil.generateString(10); 源码如下: pack

史上最全java架构师技能图谱(下)

"java架构史上最全技能图谱分为上下两篇,这是java架构史上最全图谱下篇,包含:大数据以及性能.设计模式.UML.中间件.分布式集群.负载均衡.通讯协议.架构设计等技术图谱等章节.如果需要上篇内容:数结构算法.java进阶.web开发.框架与工具四大篇章技能图谱,请查看java架构史上最全图谱上篇(历史文章查看).本文作者,陈睿 BAT优知学院创始人,一线大厂资深CTO,免费提供系统的互联网技术进阶干货资料和系列课程,以及定期的线下项目实战. 架构师进阶六大要求程序设计要求WEB开发要求架构

Java 粘包/半包 原理与拆包实战(史上最全)

疯狂创客圈 Java 聊天程序[ 亿级流量]实战系列之13 [博客园 总入口 ] 本文的源码工程:Netty 粘包/半包原理与拆包实战 源码 本实例是<Netty 粘包/半包原理与拆包实战> 一文的源代码工程. 写在前面 大家好,我是作者尼恩. 为了完成了一个高性能的 Java 聊天程序,在前面的文章中,尼恩已经再一次的进行了通讯协议的重新选择. 这就是:放弃了大家非常熟悉的json 格式,选择了性能更佳的 Protobuf协议. 在上一篇文章中,并且完成了Netty 和 Protobuf协议

史上最全、最深、最细JAVA300集全套39.4G视频课程免费分享

尚学堂JAVA300集大型基础视频课程(史上最全.最深.最细) 中国首套大型JAVA技术视频 [已更新完至300集] 还在为如何学习JAVA技术而迷茫吗?还在为如何学习Android技术而迷茫吗? java300集大型基础视频课程,现已发布第三季更新至(300)集. 史上最全:覆盖工作中需要的所有技术点. 史上最细:讲师授课代码全部手工敲出,真正的手把手教授您如何编程. 史上最深:我们的基础视频也深刻的从内存结构进行分析.JDK源代码进行分析,这都是高手的必备技能.高手从入门抓起.入门时培养良好

史上最全“大数据”学习资源整理

史上最全"大数据"学习资源整理 当前,整个互联网正在从IT时代向DT时代演进,大数据技术也正在助力企业和公众敲开DT世界大门.当今"大数据"一词的重点其实已经不仅在于数据规模的定义,它更代表着信息技术发展进入了一个新的时代,代表着爆炸性的数据信息给传统的计算技术和信息技术带来的技术挑战和困难,代表着大数据处理所需的新的技术和方法,也代表着大数据分析和应用所带来的新发明.新服务和新的发展机遇. 为了帮助大家更好深入了解大数据,云栖社区组织翻译了GitHub Aweso

史上最全编程语言列表_你掌握了哪些?

摘要: 计算机编程语言可用于将指令传达给计算机.下面可能是史上最全编程语言列表,我将它们分为以下几类,你掌握了哪些? 计算机编程语言可用于将指令传达给计算机.下面可能是史上最全编程语言列表,我将它们分为以下几类,你掌握了哪些? 解释型编程语言 函数式编程语言 编译型编程语言 过程式编程语言 脚本编程语言 标记编程语言 基于逻辑的编程语言 并发编程语言 面向对象编程语言 解释型编程语言 解释型语言是这样一种编程语言,其大部分实现直接执行指令,而无需先将程序编译成机器语言指令.解释器直接执行程序,它