如何创建一个范围随机数?

时间:2013-10-28 22:53:53

标签: java random jgrasp

我正在尝试创建一个范围随机的电话号码。格式为(xxx)-xxx-xxx,区域代码不以0,8或9开头,下一组三个在100-742范围内,最后一组4可以是任何数字。我将如何创建前两个部分?任何帮助,将不胜感激。谢谢!

import java.util.*;
import java.text.*;

public class PhoneNumber{
    public static void main(String[] arg){
        Random ranNum = new Random();
        //int areaCode = 0;
        //int secSet = 0;
        //int lastSet = 0;
        DecimalFormat areaCode = new DecimalFormat("(000)");
        DecimalFormat secSet = new DecimalFormat("-000");
        DecimalFormat lastSet = new DecimalFormat("-0000");
        //DecimalFormat phoneNumber = new DecimalFormat("(###)-###-####");
        int i = 0;
        //areaCode = (ranNum.nextInt()); //cant start with 0,8,9
        //secSet = (ranNum.nextInt()); // not greater than 742 and less than 100
        //lastSet = (ranNum.nextInt(999)) + 1; // can be any digits


        i = ranNum.nextInt();
        System.out.print(areaCode.format(i));
        i = ranNum.nextInt();
        System.out.print(secSet.format(i));
        i = ranNum.nextInt();
        System.out.print(lastSet.format(i));

    }
}

4 个答案:

答案 0 :(得分:1)

基本上,你需要在两个范围内生成数字

  • [1; 7]
  • [100; 742]

在范围内有随机整数[m; n]你可以写:
已更新(删除Math.random())

int numberInRange = m + new Random().nextInt(n - m + 1);

HTH

答案 1 :(得分:1)

1,2,3,4,5,6,7 制作7个不同的值

    ranNum.nextInt(7)+1; //So 1 is your lowest number and 7 is the number of different solutions

nexInt的范围介于0和intPassed 独占之间,
所以ranNum.nextInt(7)将在0到6之间运行,+ 1使1 ... 7 这将介于1到7之间 您可以为第二个范围采用相同的原则

答案 2 :(得分:0)

您可以尝试下一个:

int sec = java.util.concurrent.ThreadLocalRandom.current().nextInt(100, 743);

电话号码的其他部分等等。

此方法返回给定最小值(包含)和绑定(不包括)之间的伪随机均匀分布值。

答案 3 :(得分:0)

只要一个大于99且小于800的随机数,那么下一个就会大致相同。

 Random rand = new Random();

// add 1 to make it inclusive
                                   max   min
int firstRandomSet = rand.nextInt((799 - 100) + 1) + 100; 
//none starts with 0,8, or 9


int secondRandomSet = rand.nextInt((742 - 100) + 1) + 100; 
//produces anything from 100-742

要获得数字0001 - 9999,您必须具有创造性。

int maxValues= 9999;

       int thirdRandomSet = rand.nextInt(maxValues);

       System.out.printf("%04d\n", thirdRandomSet);