Random Ajuda

Cu

Veja:

e veja também:

Pra mim parece que sua pergunta é duplicada, e tem os mesmos problemas dessas.

Calcular menor rota? xiiiiiiii
Dê uma olhada:

1 curtida

Rapaz já li isso, o problema e que kkk, eu sei o que fazer só não sei como fazer

Não sei se entendi, mas seu problema é em gerar um random entre 5 e 30?

1 curtida

Isso, eu preciso gerar um random que me de 7 números entre 5 e 30, depois colocar esses números nas cidades cadastradas pelo usuário.

new Random().nextInt(26)+5

Opa to começando a resolver o problema.

private void melhorRota() {
            
            
		String nome = lerTexto("DIGITE A CIDADE EM QUE ESTÁ: ", "MELHOR ROTA");
		
           for (int i = 0; i < 7; i++) {
                System.out.println(new Random().nextInt(30));
		 }
                
	}

Porém imprimiu números iguais e não pode no caso.

O Random não garante que os números sorteados não se repetirão. Quem tem que garantir isso é você, ignorando os números repetidos. Há outros tópicos no fórum explicando como fazer isso, caso você queira. Por exemplo: Numeros aleatorios

Outra opção é você criar uma lista de números de 5 a 30, embaralhá-los e pegar os 7 primeiros. Algo assim:

List<Integer> numeros = new ArrayList<>();
for (int i= 5; i <= 30; i++){
  numeros.add(i);
}

Collections.shuffle(numeros); // embaralha a lista

List<Integer> setePrimeirosNumeros = new ArrayList<>();

while (setePrimeirosNumeros.size() < 7){
  setePrimeirosNumeros.add(numeros.remove(0)); // remove o primeiro elemento, adicionando na outra lista
}

Abraço.

1 curtida

Mais eu tenho que pegar os números que foram sorteados no Random, entre 5 e 30 não deu certo esse modo que me falou

“Não deu certo” é muito vago. O que não deu certo? O que você fez e por que o resultado não é o que você esperava?

Se está se referindo ao meu segundo código (com shuffle), o while no final “pega” os números e os coloca em um List. Com os números no List, você pode fazer o que quiser. Não há random, porque ele não é necessário. Qual a dificuldade?

Abraço.

A questão e que eu preciso usar o random

Então é obrigatório o uso do Random, é isso? Ou seja, qualquer solução que não use Random não será aceita?

Nesse caso, você continua usando o Random, e garante através do seu código que não haja números duplicados. É algo já perguntado várias e várias vezes, só procurar. Inclusive coloquei um link sobre isso com um exemplo na minha primeira resposta. De novo: Numeros aleatorios

E outro: Arrays randomicos sem repetições e casas aleatorias
E outro: Tentando Random de todas as formas e números ainda repetem!
E outro: https://pt.stackoverflow.com/questions/208069/como-faço-para-gerar-números-aleatórios-entre-5-e-30-em-java (mesmo que o seu problema).

Abraço.

1 curtida

Use um Set e um laço!
O Set lhe garante a unicidade dos valores. E para preenche-lo faça um while (set.size() < 7) . Dentro deste laço vc usa o random para sortear um valor e adicionar no Set.