Algoritmo para preencher vetor com números randômicos e diferentes

[ads2]
Olá a todos, hoje vamos aprender como fazer um algoritmo que preencha um vetor ou lista com números randômicos e diferentes. Você pode usar este algoritmo de diversas maneiras, em programas ou jogos. Por exemplo, suponhamos que eu esteja desenvolvendo um jogo de corrida de carros, e tenha que a cada nova corrida, colocar os carros no grid de forma aleatória, considerando que sejam 9 carros.
Neste caso podemos usar um vetor de 9 posições, o qual iremos preencher com números de 1 a 9, que representam os carros, para isso precisamos gerar os números randomicamente.
Veja a baixo um exemplo feito na linguagem JavaScript

Em JavaScript

Veja que o que é feito é um laço de repetição para percorrer o vetor, e que o valor gerado aleatoriamente é testado para ver se ele já existe no vetor por meio de mais um laço de repetição que percorre o vetor até a ultima posição testada. Se o número já existe o algoritmo salva o valor true na variável existe (da qual falo abaixo) e sai do segundo laço com o comando break, se não ele atribui false a variável existe.
A variável existe é do tipo boolean, e é fundamental para o funcionamento do algoritmo, pois ela serve para determinar se o número já existe ou não, veja que inicialmente ela assume o valor false, mas que pode ser alterada de acordo com a existência do número procurado. No final os testes são feitos com ela e se for igual a false ela guarda o número gerado no vetor, se for verdadeiro é decrementado a variável de controle do laço para que ele execute novamente na mesma posição.

Exemplo em Java

Caso vocês tenham sugestões para melhorar o algoritmo deixem nos comentários. Até a próxima!
[ads1]

4 respostas

  1. José Alves

    Isso é coisa de criança, de quem está em primeiro semestre em faculdade…

    de todo caso, em java:


    final int QUANT = 9;
    List x = new ArrayList();
    for(int i = 1; i <= QUANT; i++) x.add(i);
    Collections.shuffle(x);
    int[] x1 = new int[x.size()];
    for(int i = 0; i < x.size(); i++) x1[i] = x.get(i);

    Responder
    • Wong Fei Hung

      Error de compilação ao atribuir tipo de objeto diferente, a necessidade de fazer o cast , ou atribuir o tipo da lista para Integer, sugestão:

      (int) x.get(i);
      List x = new ArrayList();

      Responder
  2. José Alves

    Ou então as linhas

    int[] x1 = new int[x.size()];
    for(int i = 0; i < x.size(); i++) x1[i] = x.get(i);

    poderiam virar

    Integer[] x1 = (Integer[])x.toArray();

    Responder

Deixe uma resposta

Seu e-mail não será publicado.