[英]how can I generate a random number of any particular number of digits (say 5) in java?
我想在Java中生成任何特定数字的随机数(例如5,即10000到99999)。 我怎样才能做到这一点?
在您的示例中,创建范围为0,10^k - 10^(k-1)
的随机整数,并添加10^(k-1)
。 范围0,90000
,并加上10000。
就像是:
new Random().nextInt(90000) + 10000
简单。
- 生成最多89999的随机数
- 将每个生成的数字加10000。
public int generateRandom() {
Random r = new Random( System.currentTimeMillis() );
return 10000 + r.nextInt(20000);
}
这是从这里
要么 :
for (int i = 0; i < 10; i++) {
System.out.println(Math.round(Math.random() * 89999) + 10000);
}
以下应该工作:
public int getRandomNumber(int digits)
{
assert digits > 0; //added because of comment
BigInteger tenPower = new BigInteger("10");
return new Random().nextInt((tenPower.pow(digits).subtract(tenPower.pow(digits-1))).intValue()) + tenPower.pow(digits-1).intValue();
}
输出:
Digits: 1
- Random nextInt Param: 9
- Adding: 1
Random number: 1
Digits: 2
- Random nextInt Param: 90
- Adding: 10
Random number: 66
Digits: 3
- Random nextInt Param: 900
- Adding: 100
Random number: 377
Digits: 4
- Random nextInt Param: 9000
- Adding: 1000
Random number: 1734
Digits: 5
- Random nextInt Param: 90000
- Adding: 10000
Random number: 96602
因此,它将创建如下数字:
1...9
10...99
100...999
1000...9999
10000...99999
这是处理负范围和正范围的方法。 计算范围内的随机数,然后加上下限。 例如,如果范围是100-150,则计算一个介于0到50之间的数字并加100。这对于正负范围都适用。
import java.util.Random;
public class ArbitraryRange {
public static void main(String []args){
int start = -10000;
int end = -5000;
Random rand = new Random();
int r = rand.nextInt(end - start) + start;
System.out.println(r);
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.