如何在java中生成任意特定数字(例如5)的随机数?

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)。 range 0,90000,并为其添加10000。

使用Random.nextInt(int)方法。

就像是:

1
new Random().nextInt(90000) + 10000


以下是处理负范围和正范围的方法。 计算范围大小内的随机数,然后添加下限。 例如。 如果范围是100-150,则计算0到50之间的数字并添加100.这适用于正范围和负范围。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
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);
     }
}


以下应该有效:

1
2
3
4
5
6
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();
}

输出:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
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
2
3
4
5
1...9
10...99
100...999
1000...9999
10000...99999


1
2
3
4
public int generateRandom() {
    Random r = new Random( System.currentTimeMillis() );
    return 10000 + r.nextInt(20000);
}

这是从这里来的

要么 :

1
2
3
for (int i = 0; i < 10; i++) {  
     System.out.println(Math.round(Math.random() * 89999) + 10000);  
}

简单。

  • generate a random number upto 89999
  • Add 10000 to each generated number.