今天我遇到了这个问题,我确信有一个优雅的解决方案,我没有想到。生成一个具有指定位数的随机整数Java
比方说,我想用一个指定的位数生成一个Java中的随机整数(或长整数),这个位数可以改变。
I.e.将一些数字传入一个方法,并返回一个具有指定位数的随机数。例如,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);
}
是否有比这更好/更高效的解决方案?
*在指定范围内生成随机数有很多解决方案,我更加好奇在给定一定数量的数字的情况下生成随机数的最佳方法,以及使解决方案足够健壮以处理任意数量数字。
我不希望有一个最大和最小传递,而只是位数需要
我喜欢你的方法,因为它没有受到LONG长度的约束,除了你长时间施展它。 – Elye
@aetheria更新,以显示它为什么不是重复 –
@aetheria你能解释为什么这是一个重复?这是一个完全不同的问题,比你引用 –