Java random number with given length
我需要用Java中的6位数字来生成一个随机数。我知道我可以在一个随机变量上循环6次,但是在标准JavaSE中还有其他方法吗?
编辑-后续问题:
现在我可以生成我的6位数字了,我遇到了一个新问题,我试图创建的整个ID是语法123456-A1B45。那么,我如何随机化最后5个字符,可以是a-z或0-9?我正在考虑使用char值并随机化一个48-90之间的数字,然后简单地删除得到代表58-64的数字的任何值。这是要走的路还是有更好的解决方案?
编辑2:
这是我的最终解决方案。谢谢大家的帮助!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | 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; } |
要生成6位数字:
使用
注意,
So how do I randomize the last 5 chars that can be either A-Z or 0-9?
下面是一个简单的解决方案:
1 2 3 4 5 6 7 8 | // Generate random id, for example 283952-V8M32 char[] chars ="ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789".toCharArray(); Random rnd = new Random(); StringBuilder sb = new StringBuilder((100000 + rnd.nextInt(900000)) +"-"); for (int i = 0; i < 5; i++) sb.append(chars[rnd.nextInt(chars.length)]); return sb.toString(); |
生成从
1 2 | // pseudo code int n = 100000 + random_float() * 900000; |
我很确定你已经阅读了文档,例如随机文件,并且可以自己找出其余的。
如果需要指定确切的charactor长度,则必须避免前面有0的值。
最后的字符串表示形式必须具有精确的字符长度。
1 2 3 4 5 |
试试这个:
1 2 3 |
对于后续问题,您可以得到一个介于36^5和36^6之间的数字,并以36为基数进行转换。
更新:
使用此代码
http://javaconfessions.com/2008/09/convert-between-base-10-and-base-62-in_28.html
这是书面的
但是在您的用例中,它可以通过使用
编辑:
1 |
编辑:修复了off-by-1错误并删除了无效的解决方案。
这对你有用吗?
1 2 3 4 5 6 |
}
结果,例如0.019007
生成一个随机数(总是在0-1之间)并乘以1000000