我想在java中生成任意特定数字(例如5,即10000到99999)的随机数。我怎么能这样做?
答案 0 :(得分:6)
在范围0,10^k - 10^(k-1)
中创建一个随机整数,并在您的示例中添加10^(k-1)
。范围0,90000
,并为其添加10000。
使用Random.nextInt(int)方法。
类似的东西:
new Random().nextInt(90000) + 10000
答案 1 :(得分:0)
简单。
- 生成一个高达89999的随机数
- 为每个生成的号码添加10000个。
醇>
答案 2 :(得分:0)
public int generateRandom() {
Random r = new Random( System.currentTimeMillis() );
return 10000 + r.nextInt(20000);
}
来自here
或:
for (int i = 0; i < 10; i++) {
System.out.println(Math.round(Math.random() * 89999) + 10000);
}
答案 3 :(得分:0)
以下内容应该有效:
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
答案 4 :(得分:0)
以下是处理负面和正面范围的方法。计算范围大小内的随机数,然后添加下限。例如。如果范围是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);
}
}