繁体   English   中英

如何在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) 范围0,90000 ,并加上10000。

为此使用Random.nextInt(int)方法。

就像是:

new Random().nextInt(90000) + 10000

简单。

  1. 生成最多89999的随机数
  2. 将每个生成的数字加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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM