【发布时间】:2011-07-20 13:05:42
【问题描述】:
我需要在 Java 中生成一个正好为 6 位的随机数。我知道我可以在随机器上循环 6 次,但在标准 Java SE 中还有其他方法吗?
编辑 - 后续问题:
现在我可以生成我的 6 位数字,但我遇到了一个新问题,我尝试创建的整个 ID 的语法为 123456-A1B45。那么我如何随机化最后 5 个可以是 A-Z 或 0-9 的字符呢?我正在考虑使用 char 值和 randomice 48 - 90 之间的数字,并简单地删除任何获得代表 58-64 的数字的值。这是要走的路还是有更好的解决方案?
编辑 2:
这是我的最终解决方案。感谢大家的帮助!
protected String createRandomRegistryId(String handleId)
{
// syntax we would like to generate is DIA123456-A1B34
String val = "DI";
// char (1), random A-Z
int ranChar = 65 + (new Random()).nextInt(90-65);
char ch = (char)ranChar;
val += ch;
// numbers (6), random 0-9
Random r = new Random();
int numbers = 100000 + (int)(r.nextFloat() * 899900);
val += String.valueOf(numbers);
val += "-";
// char or numbers (5), random 0-9 A-Z
for(int i = 0; i<6;){
int ranAny = 48 + (new Random()).nextInt(90-65);
if(!(57 < ranAny && ranAny<= 65)){
char c = (char)ranAny;
val += c;
i++;
}
}
return val;
}
【问题讨论】:
-
投票重新开放。 范围中的随机数与给定长度的随机数略有不同。