文档章节

java随机字符生成工具

孟飞阳
 孟飞阳
发布于 2016/06/30 09:48
字数 515
阅读 32
收藏 0

以下是我自己在工作中常用到的,比较好用,分享给大家。

package org.phoenix.api.utils;

import java.io.UnsupportedEncodingException;
import java.util.Random;
import java.util.concurrent.ThreadLocalRandom;

/**
 * 随机字符工具类
 * @author mengfeiyang
 *
 */
public class RandomUtils {
	
	/**
	 * 产生随机的字符串。这个方法产生的中文字符不会乱码
	 * @param len 字符串长度
	 * @return
	 */
	public static String getRanCHS(int len) {
		String ret = "";
		for (int i = 0; i < len; i++) {
			String str = null;
			int hightPos, lowPos; // 定义高低位

			Random random = new Random();
			hightPos = (176 + Math.abs(random.nextInt(39))); // 获取高位值

			lowPos = (161 + Math.abs(random.nextInt(93))); // 获取低位值

			byte[] b = new byte[2];
			b[0] = (new Integer(hightPos).byteValue());
			b[1] = (new Integer(lowPos).byteValue());
			try {
				str = new String(b, "GBK"); // 转成中文

			} catch (UnsupportedEncodingException ex) {
				ex.printStackTrace();
			}
			ret += str;
		}
		return ret;
	}
	
	/**
	 * 随机产生指定数个的小写英文字符
	 * @param len
	 * @return
	 */
	public static String getRanEN(int len) {
		String str = "";
		for (int i = 0; i < len; i++) {
			str = str + (char) (Math.random() * 26 + 'a');
		}
		return str;
	}
	
	/**
	 * 产生一个0-num之间的数字,不保证位数.如果想取负数,请在方法前加 -
	 * @param num
	 * @return
	 */
	public static int getRanInt(int num){
		return ThreadLocalRandom.current().nextInt(num);
	}
	
	/**
	 * 产生一个0-num之间的数字,且保证位数为length,如果想取负数,请在方法前加 -
	 * @param num
	 * @param length
	 * @return
	 */
	public static int getRanInt(int num,int length){
		int newInt = getRanInt(num);
		int olen = Integer.toString(newInt).length();
		while(olen < length){
			newInt = getRanInt(num);
			olen = Integer.toString(newInt).length();
		}
		return newInt;
	}
	/**
	 * 随机产生一个小于size的float数据,如size=1000,则可能返回:291.58676,如果想取负数,请在方法前加 -
	 * @param size
	 * @return
	 */
	public static float getRanFloat(int size){
		return ThreadLocalRandom.current().nextFloat()*size;
	}
	
	/**
	 * 随机产生一个小于size的double数据,如size=1000,则可能返回:901.3634319184971.如果想取负数,请在方法前加 -
	 * @param size
	 * @return
	 */
	public static double getRanDouble(int size){
		return ThreadLocalRandom.current().nextDouble()*size;
	}
	
	/**
	 * 产生一个随机的long数据.如果想取负数,请在方法前加 -
	 * @return
	 */
	public static long getRanLong(){
		return ThreadLocalRandom.current().nextLong();
	}	
	/**
	 * 在给定种子的列表中随机产生指定长度的字符串,如种子为:String oos = {"a","b","1","2"};产生随机字符时,从oos中获取
	 * @param len
	 * @param seed
	 * @return
	 */
	public static String getRanString(int len,String[] seed){
		StringBuilder result = new StringBuilder();
		for(int i=0;i<len;i++){
			int index = ThreadLocalRandom.current().nextInt(seed.length);
			result.append(seed[index]);
		}
		return result.toString();
	}
}

 

© 著作权归作者所有

孟飞阳
粉丝 214
博文 1018
码字总数 559543
作品 5
朝阳
个人站长
私信 提问
Jmockdata 4.1.2 发布,随机模拟 Java 数据

Jmockdta 是一款实现模拟 JAVA 类型或对象的实例化并随机初始化对象的数据的工具框架。单元测试的利器。 The plugin of Jmockdata what through random algorithm mock java data. Jmockdat...

寻觅一只耳朵
03/17
0
0
如何随机生成一个合法的 Java 文件

大牛们: 有谁知道,或者有什么工具,可以随机生成java 文件的,生成的java 文件包含随机创建java对象,并调用其方法的.

千叶
2013/03/30
193
1
YourKit 12.0.5 发布,Java 程序剖析工具

YourKit 12.0.5 修复了当会话名称包含一些无效的文件名字符时导致无法生成代理日志文件的问题。 YourKit Java Profiler 是业界领先的Java和.NET的剖析工具。CPU和内存的剖析历来是很困难的,...

oschina
2013/05/01
917
1
java基础--JDK安装、环境变量配置、工具开发第一个程序、数据类型、运算符

-----Java基础大纲----- **-----本章节-----** 1.Java语言的历史、特点及工作原理 2.JRE和JDK的介绍 3.Java运行环境和开发工具 4.Java基础语法 **-----下一章节-----** 5.条件语句 6.循环 7....

我是宁采臣
2018/06/26
0
0
JavaIO/输出输入入门

IO称之为输入输出,Java的IO是通过java.io包下的类和接口来支持,包含两大类:输入,输出. 在整个Java.io包中最重要的就是5个类和一个接口。5个类指的是File、OutputStream、InputStream、Write...

Zhao-Qian
2013/01/04
0
0

没有更多内容

加载失败,请刷新页面

加载更多

ngrok 外网映射工具

ngrok介绍 许多刚学java web的同学(包括我自己)肯定都非常好奇,如何在外网上访问自己做的项目,跟我们本地访问tomcat有什么区别? 今天就向大家介绍一个非常强大的外网映射工具:ngrok.ngrok可以...

edison_kwok
50分钟前
2
0
Spark Streaming的优化之路——从Receiver到Direct模式

          作者:个推数据研发工程师 学长 1 业务背景 随着大数据的快速发展,业务场景越来越复杂,离线式的批处理框架MapReduce已经不能满足业务,大量的场景需要实时的数据处理结果来...

个推
今天
4
0
壮丽70年·奋斗新时代|蒸妙集团熏蒸中会阴熏蒸的神奇好处

聚结相合之处为会。会阴居两阴间,为督、任、冲三脉的起点,三脉背出两阴之间,会聚阴部,因名会阴。会阴,经穴名。出《针灸甲乙经》。会阴别名屏翳、下极、金门。属任脉。在会阴部,男性当阴...

公益传承
今天
2
0
pentaho-kettle-8.2.0.0-R源码开发环境搭建

1.从Kettle官网下载源码,本文使用的是pentaho-kettle-8.2.0.0-R 下载地址:https://codeload.github.com/pentaho/pentaho-kettle/zip/8.2.0.0-R 2.打开eclipse,选择一个新的工作空间,然后设...

gq_2010
今天
1
0
lua web快速开发指南(7) - 高效的接口调用 - httpc库

httpc库基于cf框架都内部实现的socket编写的http client库. httpc库内置SSL支持, 在不使用代理的情况下就可以请求第三方接口. httpc支持header、args、body、timeout请求设置, 完美支持各种h...

水果糖的小铺子
今天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部