How do I generate random numbers between 5 and 30 in Java?

1

I need to use the random method and store it in a distance variable, then show the distance from city A to city B, and city A to city D, that is, a different random number for each distance of THE. After creating the instances of the class City and their respective distances, I need to compare if city B is for city A and city D for city A have the same amount if the random number is the same.

At the time of seeing the information of the cities the values of the distances do not beat, I am using the toString method to see this information

//Estou usando esse método
while(true){  
    Random r = new Random();  
    int i = r.nextInt(30)+1;


// São acrescentadas as informações das cidades após elas serem criadas
    Cidade cA = new Cidade("A", 200, "Geraldo", "Cidades B e D", r.nextInt(30)+1, r.nextInt(30)+1);
    Cidade cB = new Cidade("B", 250, "Silvia", "Cidades A , C e F", cA.getDistancia1(), r.nextInt(30)+1, r.nextInt(30)+1);
    Cidade cC = new Cidade("C", 220, "João", "Cidades B e D", cB.getDistancia2(), r.nextInt(30)+1);
    Cidade cD = new Cidade("D", 250, "Pedro", "Cidades A , C e E", cA.getDistancia2(), cC.getDistancia2(),r.nextInt(30)+1);
    Cidade cE = new Cidade("E", 350, "Maria", "Cidades D e G", cD.getDistancia3(), r.nextInt(30)+1);
    Cidade cF = new Cidade("F", 300, "Vítor", "Cidades B e G", cB.getDistancia3(), r.nextInt(30)+1);
    Cidade cG = new Cidade("G", 400, "Miguel", "Cidades E e F", cE.getDistancia2(), cF.getDistancia2());



// continuação do código
}
    
asked by anonymous 27.05.2017 / 18:20

1 answer

4

You can do this:

  public static int geraAleatorio(int max, int min) {
        Random random = new Random();
        return (random.nextInt(max - (min - 1)) + min);
    }

This will generate a random number of at most 30, and at least 5.
If you want you can convert the possible values of the range 30-5 (25) numbers. to a List, or another subclass (ArrayList> of List.

List<Integer> lista = IntStream.generate(()->geraAleatorio(30, 5)).limit(100).distinct().boxed().collect(Collectors.toList());

And then display: lista.forEach(e-> System.out.print(e + " "));
Or get a random value from the list.

int num = lista.stream().findAny().map(Integer::intValue).get();
    
27.05.2017 / 20:02