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

时间:2014-09-04 08:33:42

标签: java

我想在java中生成任意特定数字(例如5,即10000到99999)的随机数。我怎么能这样做?

5 个答案:

答案 0 :(得分:6)

在范围0,10^k - 10^(k-1)中创建一个随机整数,并在您的示例中添加10^(k-1)。范围0,90000,并为其添加10000。

使用Random.nextInt(int)方法。

类似的东西:

new Random().nextInt(90000) + 10000

答案 1 :(得分:0)

简单。

  
      
  1. 生成一个高达89999的随机数
  2.   
  3. 为每个生成的号码添加10000个。
  4.   

答案 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);
     }
}