public static Set<String> cDifferentRandoms(int n, int m) { // 产生n个只含有数字和字母长度为m(m<=52)的无重复随机字符串 if (m > 52) { return null; } else { Set<String> set = new HashSet<String>(); while (set.size() < n) { set.add(cRandom(m)); } return set; } }
public static String cRandom(int m) { // 产生1个长度为m只含有字母的随机字符串 char[] chs = new char[m]; for (int i = 0; i < m; i++) { chs[i] = cNumOrCharRandom(); } return new String(chs); }
public static int iRandom(int m, int n) { // 产生一个[m,n)之间的随机整数 Random random = new Random(); int small = m > n ? n : m; int big = m <= n ? n : m; return small + random.nextInt(big - small); }}运算结果: ……………… ……………… yMdSBxOMUnd F1Vx9BlsFER 3eajZQXcxOv upRVikSAou4 J5zIHelpL82 Uz2rqN0qk7t vyIct63bHNL qPR4kTQLUEf 0ZBlKi2UG1X lcFo3TlzIyu jzjoFR3zF2n ChYWsdXG1Kc Wv3vIP6o4H8 ggwnPSxtsV9 gfGLhn0jH1t Totally 1.953 seconds used!
用HashMap和new Random(new Date().getTime())
生成UUID不是更好吗? import java.util.UUID;public class UTest { public static void main(String[] args) { UUID uuid = UUID.randomUUID(); System.out.println(uuid); } }
写不进的就是重复的
一直写到count()>10W
这不就保证不重复了
* @生成10以内的随机数
*/
public static void main(String[] args)
{
Random r=new Random();
int[] rs=new int[10];
int n=0;
int result;
for(int s=0;s<=9;s++)
{
while(true)
{
result=r.nextInt(100);
for(n=0;n<=9;n++)
{
if(result==0||(rs[n]==result))
{
break;
}
}
if(n>9)
break;
}
rs[s]=result;
System.out.println(rs[s]);
}
}
* @author: 忆年
* @date: 2008-9-5 14:27:59
*/import java.util.HashSet;
import java.util.Random;
import java.util.Set;public class Test1 { /**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub Set<String> set = cDifferentRandoms(100000, 11); // 产生100000个长度为11的随机无重复字符串
long startTime = System.currentTimeMillis();
for (String str : set) {
System.out.println(str);
}
long endTime = System.currentTimeMillis();
System.out.println("Totally " + ((float)(endTime - startTime) / 1000) + " seconds used!");
}
public static Set<String> cDifferentRandoms(int n, int m) { // 产生n个只含有数字和字母长度为m(m<=52)的无重复随机字符串
if (m > 52) {
return null;
} else {
Set<String> set = new HashSet<String>();
while (set.size() < n) {
set.add(cRandom(m));
}
return set;
}
}
public static String cRandom(int m) { // 产生1个长度为m只含有字母的随机字符串
char[] chs = new char[m];
for (int i = 0; i < m; i++) {
chs[i] = cNumOrCharRandom();
}
return new String(chs);
}
public static char cNumOrCharRandom() { // 产生一个随机数字或字母
String temp = "0123456789QWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnm";
return (char) temp.charAt(iRandom(0, 61));
}
public static int iRandom(int m, int n) { // 产生一个[m,n)之间的随机整数
Random random = new Random();
int small = m > n ? n : m;
int big = m <= n ? n : m;
return small + random.nextInt(big - small);
}}运算结果:
………………
………………
yMdSBxOMUnd
F1Vx9BlsFER
3eajZQXcxOv
upRVikSAou4
J5zIHelpL82
Uz2rqN0qk7t
vyIct63bHNL
qPR4kTQLUEf
0ZBlKi2UG1X
lcFo3TlzIyu
jzjoFR3zF2n
ChYWsdXG1Kc
Wv3vIP6o4H8
ggwnPSxtsV9
gfGLhn0jH1t
Totally 1.953 seconds used!
import java.util.UUID;public class UTest {
public static void main(String[] args) {
UUID uuid = UUID.randomUUID();
System.out.println(uuid);
}
}