今天我遇到了这个问题,我相信有一种优雅的解决方案我没有考虑到。
假设我想在Java中生成一个指定位数的随机整数(或长整型),其中这个位数可以改变。
即,在方法中传入数字位数,返回一个具有指定位数的随机数。
例如:N = 3,生成介于100-999之间的随机数; N = 4,生成介于1000-9999之间的随机数。
private long generateRandomNumber(int n){
/*Generate a random number with n number of digits*/
}
我迄今为止的尝试(这个方法可行,但看起来有点凌乱)
private long generateRandomNumber(int n){
String randomNumString = "";
Random r = new Random();
//Generate the first digit from 1-9
randomNumString += (r.nextInt(9) + 1);
//Generate the remaining digits between 0-9
for(int x = 1; x < n; x++){
randomNumString += r.nextInt(9);
}
//Parse and return
return Long.parseLong(randomNumString);
}
有比这个更好/更有效的解决方案吗?
*在指定范围内生成随机数有很多解决方案,但我更想知道生成给定位数的随机数的最佳方法,以及使解决方案足够强大,可以处理任意数量的位数。
我不想传递最小值和最大值,而只是需要指定位数。