java随机⽣成五位_关于java:⽣成5位的随机引脚
我想根据我在Stack Overflow上发现的随机数⽣成Unique Pins如何⽣成⼀个随机的五位数Java。 该问题使⽤时间来⽣成数字,因此您可以获得⼤量重复项。
这是我的代码
public int createRandomPin() {
int k = Int(Integer.SIZE);
k = (k + 1) * 9999;
if (9999 > k || k > 99999) {
//then regenerate
} else {
return k;
}
}
我的问题
java生成随机数的方法
然后,NetBeans会发出错误"返回"的警告。 我还需要重新构造代码,这样如果它不是⼀个5位数的引脚,它会在"返回k"之前再次⽣成。
我建议使⽤SecureRandom类⽣成随机数,然后因为它需要5位数,使⽤Int(100000)创建0到99999之间的随机数,这⾥0是包含的,100000是独占的,然后将其格式化为5数字加零。
SecureRandom random = new SecureRandom();
int num = Int(100000);
String formatted = String.format("%05d", num);
System.out.println(formatted);
我希望这能解决你的问题
编辑:这篇⽂章错误地说10,000,已编辑说100,000
如果你使⽤String.format,那么每次你得到5位数字,即。 如果数字的位数少于5,则将附加零。
我已经尝试过⽐其他⽅式更好的⽣成引脚的⽅法。 我需要添加⼀些可以测试引脚是否是5位数的东西,如果不是它再⽣。请返回它。
是否可以更新您的答案?
@User在我的情况下,⽣成的数字总是5位数字,如果⼩于5位数字,将填充"0"。
Integer.SIZE产⽣int数据类型的位数。这与随机值的范围跨度⽆关。
使⽤它作为Int的参数没有任何意义(实际上它在范围[0,32)中⽣成随机值)。
只需⽣成⼀个int value = Int(100000),即可获得[0,99999]中的值。
现在你对5位数字引脚的定义不准确,40可以解释为00040,所以如果你填充它仍然是5位数。你必须考虑到这⼀点,因为强制5个"可见"数字意味着⽣成范围[10000,99999]的数字,但这只是⼀个尴尬的解决⽅案。
来⾃apache common lang3的RandomUtils.randomNumeric(int count)或RandomUtils.randomNumeric(int inLength, int maxLength)也可⽤于相同的⽬的。