【发布时间】:2016-05-13 18:07:50
【问题描述】:
我今天遇到了这个问题,我确信有一个我没有想到的优雅解决方案。
假设我想在 Java 中生成一个具有指定位数的随机整数(或长整数),其中该位数可以更改。
即将多个数字传入一个方法,并返回一个具有指定位数的随机数
Ex.) 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 长度的限制,除非你把它转换成 long。
-
@aetheria 更新以说明为什么它不是重复的
-
@aetheria 你能解释一下为什么这是重复的吗?这是一个与您引用的完全不同的问题