package com.mao;
import java.io.Serializable;
import java.util.LinkedHashSet;
import java.util.Random;
import java.util.Set;
/**
2019年8月15日下午6:13:02
*/
public class RandomUtils {
private static final Random random=new Random();
/**
* 得到字母数字序列
*
* @param len
* 长度
* @param type
* 类型 1、大写字母,2、小写字母,3、数字
* @return
*/
public static String getRandomChar(int len, int type) {
StringBuffer result = new StringBuffer();
switch (type) {
case 1:
for (int i = 0; i < len; i++) {
result.append((char) (random.nextInt(26) + 65));
}
break;
case 2:
for (int i = 0; i < len; i++) {
result.append((char) (random.nextInt(26) + 97));
}
case 3:
for (int i = 0; i < len; i++) {
result.append(random.nextInt(10));
}
break;
default:
return null;
}
return result.toString();
}
/**
* 得到不重复的字母数字序列
*
* @param len
* 长度
* @param type
* 类型 1、大写字母,2、小写字母,3、数字
* @return
*/
public static String getRandomCharNoRepeat(int len, int type) {
StringBuffer result = new StringBuffer();
Set<Serializable> set = new LinkedHashSet<Serializable>();
boolean b = true;
switch (type) {
case 1:
for (int i = 0; i < len; i++) {
b = set.add((char) (random.nextInt(26) + 65));
if (!b) {
i--;
}
}
break;
case 2:
for (int i = 0; i < len; i++) {
set.add((char) (random.nextInt(26) + 97));
b = set.add((char) (random.nextInt(26) + 65));
if (!b) {
i--;
}
}
case 3:
if (len >= 10) {
return "0123456789";
}
for (int i = 0; i < len; i++) {
b = set.add(random.nextInt(10));
if (!b) {
i--;
}
}
break;
default:
return null;
}
for (Serializable s : set) {
result.append(s);
}
return result.toString();
}
/**
* 获取[small,big]间的数字
* @param small
* @param big
* @return
*/
public static int getNumber(int small,int big) {
int cha = big-small;
if(cha>0) {
return random.nextInt(cha+1)+small;
}
if(cha==0) {
return small;
}
return -Integer.MAX_VALUE;
}
public static String getRandomSC(int len) {
StringBuffer result = new StringBuffer();
String[] rBase = { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f" };
for (int i = 0; i < len; i++) {
// 生成第一位区码
int r1 = random.nextInt(3) + 11;
String str_r1 = rBase[r1];
// 生成第二位区码
int r2 = r1 == 13 ? random.nextInt(7) : random.nextInt(16);
String str_r2 = rBase[r2];
// 生成第一位位码
int r3 = random.nextInt(6) + 10;
String str_r3 = rBase[r3];
// 生成第二位位码
int r4;
if (r3 == 10) {
r4 = random.nextInt(15) + 1;
} else if (r3 == 15) {
r4 = random.nextInt(15);
} else {
r4 = random.nextInt(16);
}
String str_r4 = rBase[r4];
// 将生成的机内码转换为汉字
byte[] bytes = new byte[2];
// 将生成的区码保存到字节数组的第一个元素中
String str_12 = str_r1 + str_r2;
bytes[0] = (byte) Integer.parseInt(str_12, 16);
// 将生成的位码保存到字节数组的第二个元素中
bytes[1] = (byte) Integer.parseInt(str_r3 + str_r4, 16);
result.append(new String(bytes));
}
return result.toString();
}
public static String getSex() {
return random.nextBoolean()?"男":"女";
}
public static String getProvince() {
String provinces = "京 津 沪 渝 晋 鲁 贛 陕 琼 闽 浙 黑 辽 吉 内蒙古 冀 苏 皖 豫 湘 粤 桂 川 云 港 澳 台 青 宁 新 甘 藏 鄂";
String[] s = provinces.split(" ");
return s[random.nextInt(s.length)];
}
public static String getXingshi() {
String xing = "赵 钱 孙 李 周 吴 郑 王 冯 陈 楮 卫 蒋 沈 韩 杨 朱 秦 尤 许 何 吕 施 张 孔 曹 严 华 "
+ "金 魏 陶 姜 戚 谢 邹 喻 柏 水 窦 章 云 苏 潘 葛 奚 范 彭 郎 鲁 韦 昌 马 苗 凤 花 方 俞 任 "
+ "袁 柳 酆 鲍 史 唐 费 廉 岑 薛 雷 贺 倪 汤 滕 殷 罗 毕 郝 邬 安 常 乐 于 时 傅 皮 卞 齐 康 "
+ "伍 余 元 卜 顾 孟 平 黄 和 穆 萧 尹 姚 邵 湛 汪 祁 毛 禹 狄 米 贝 明 臧 计 伏 成 戴 谈 宋 "
+ "茅 庞 熊 纪 舒 屈 项 祝 董 梁 杜 阮 蓝 闽 席 季 麻 强 贾 路 娄 危 江 童 颜 郭 梅 盛 林 刁 "
+ "锺 徐 丘 骆 高 夏 蔡 田 樊 胡 凌 霍 虞 万 支 柯 昝 管 卢 莫 经 房 裘 缪 干 解 应 宗 丁 宣 "
+ "贲 邓 郁 单 杭 洪 包 诸 左 石 崔 吉 钮 龚 程 嵇 邢 滑 裴 陆 荣 翁 荀 羊 於 惠 甄 麹 家 封 "
+ "芮 羿 储 靳 汲 邴 糜 松 井 段 富 巫 乌 焦 巴 弓 牧 隗 山 谷 车 侯 宓 蓬 全 郗 班 仰 秋 仲 "
+ "伊 宫宁 仇 栾 暴 甘 斜 厉 戎 祖 武 符 刘 景 詹 束 龙 叶 幸 司 韶 郜 黎 蓟 薄 印 宿 白 怀 "
+ "蒲 邰 从 鄂 索 咸 籍 赖 卓 蔺 屠 蒙 池 乔 阴 郁 胥 能 苍 双 闻 莘 党 翟 谭 贡 劳 逄 姬 申 "
+ "扶 堵 冉 宰 郦 雍 郤 璩 桑 桂 濮 牛 寿 通 边 扈 燕 冀 郏 浦 尚 农 温 别 庄 晏 柴 瞿 阎 充 "
+ "慕 连 茹 习 宦 艾 鱼 容 向 古 易 慎 戈 廖 庾 终 暨 居 衡 步 都 耿 满 弘 匡 国 文 寇 广 禄 "
+ "阙 东 欧 殳 沃 利 蔚 越 夔 隆 师 巩 厍 聂 晁 勾 敖 融 冷 訾 辛 阚 那 简 饶 空 曾 毋 沙 乜 "
+ "养 鞠 须 丰 巢 关 蒯 相 查 后 荆 红 游 竺 权 逑 盖 益 桓 公 万俟 司马 上官 欧阳 夏侯 诸葛 "
+ "闻人 东方 赫连 皇甫 尉迟 公羊 澹台 公冶 宗政 濮阳 淳于 单于 太叔 申屠 公孙 仲孙 轩辕 令狐 "
+ "锺离 宇文 长孙 慕容 鲜于 闾丘 司徒 司空 丌官 司寇 仉 督 子车 颛孙 端木 巫马 公西 漆雕 乐正 "
+ "壤驷 公良 拓拔 夹谷 宰父 谷梁 晋 楚 阎 法 汝 鄢 涂 钦 段干 百里 东郭 南门 呼延 归 海 羊舌 微生 "
+ "岳 帅 缑 亢 况 后 有 琴 梁丘 左丘 东门 西门 商 牟 佘 佴 伯 赏 南宫 墨 哈 谯 笪 年 爱 阳 佟";
String[] s = xing.split(" ");
return s[random.nextInt(s.length)];
}
}
利用随机数起名真的是头一遭啊,
其实还有点意思,笑纳笑纳啊