短信验证码问题,本质是产生某个范围内的随机数。
比如,要生成6位短信验证码;
6位数最大到999999;
同时为了防止数少于6位,导致高位补0的麻烦和尴尬,我们可以刻意规定,最小值是100000;
这样问题就变成了:产生[100000, 999999]
范围内的随机数的问题。
由于Java
中Random
对象的nextInt(n)
方法产生的是[0, n-1)
范围内的随机数。
因此要产生[m, n]
范围内的随机数就是: m + randObj.nextInt(n-m+1)
Random randObj = new Random();
public String generateCode() {
return Integer.toString(100000 + randObj.nextInt(900000));
}