你搞错了Mac的构成,实际上是随机生成6个0~255的随机数 Random rand = new Random(); StringBuilder buff = new StringBuilder(); for (int i = 0; i <6; i++) { buff.append(Integer.toHexString(rand.nextInt(256)).append('-'); } buff.setLength(buff.length() - 1);
至于你说3000个不同的mac,那就再 Set<String> all = new HashSet<String>(); Random rand = new Random(); for( int z = 0; z < 3000;) { StringBuilder buff = new StringBuilder(); for (int i = 0; i <6; i++) { buff.append(Integer.toHexString(rand.nextInt(256))).append('-'); } buff.setLength(buff.length() - 1); if(all.add(buff.toString())) z++; }
Random rand = new Random();
StringBuilder buff = new StringBuilder();
for (int i = 0; i <6; i++) {
buff.append(Integer.toHexString(rand.nextInt(256)).append('-');
}
buff.setLength(buff.length() - 1);
Set<String> all = new HashSet<String>();
Random rand = new Random();
for( int z = 0; z < 3000;) {
StringBuilder buff = new StringBuilder();
for (int i = 0; i <6; i++) {
buff.append(Integer.toHexString(rand.nextInt(256))).append('-');
}
buff.setLength(buff.length() - 1);
if(all.add(buff.toString()))
z++;
}
这个是有点问题的,如果生成的每个-前一个数是0,就不符合正常mac的,如:6-d-75-dd-63-41
int next = rand.nextInt(256));
if(next >= 16)
buff.append(Integer.toHexString(next).append('-');
else
buff.append('0').append(Integer.toHexString(next)).append('-');