Olá pessoal. Gostaria de saber como utilizar o método que gera números aletórios Math.random, porém limitando a ocorrência de um número, no caso o 0. Além disso, como faria para que ele não repetisse os números “sorteados”?
Muito obrigado.
Olá pessoal. Gostaria de saber como utilizar o método que gera números aletórios Math.random, porém limitando a ocorrência de um número, no caso o 0. Além disso, como faria para que ele não repetisse os números “sorteados”?
Muito obrigado.
se vc quiser usando o metodo random da classe Math tb funcina desse jeito:
vc cria um array com as possibilidades q vc quer, depois vc sorteia um numero com o Math.random() que sera a posicao do array, dai vc pega o valor e copia o ultimo valor “valido” do array para a posicao q tinha sido sortiada, depois eh soh repetir o processo assumindo que o array esta 1 elemento menor. um ex que gera numeros de 1 a 100 sem repetir:
public class Exemplo{
int tamanho = 100;
int array[] = new int[tamanho];
public Exemplo(){
for (int i = 0; i < tamanho; i++) array[i] = i + 1;
}
public int next(){
if (tamanho == 0) throw new RuntimeException("Nao a mais numeros");
// amarzena em x um numero de 0 a tamanho
int x = (int)(Math.random() * tamanho);
// grava o resultado a retornar
int resultado = array[x];
// diminui o array e substitui o elemento sorteado
array[x] = array[--tamanho];
return resultado;
}
}
OBS: eu dei uma olhada nesse artigo, e achei interecante, porem ao q me parece ele n ha garantia de que nao havera repeticao de numeros…
Existe uma maneira de evitar que não apareçam os números sorteados:
Outra forma, que é mais estúpida mas é mais fácil de codificar, é a seguinte:
Todas as idéias acima são boas idéias, inclusive a última thingol. Obrigado a todos.
Abraço e Long Live Rock’n’Roll