Problemas com o Random

5 respostas
paulocesar10

Preciso de ajuda, neste codigo preciso alterar o número de objetos inseridos no vetor de 200 posições, neste exemplo só consigo colocar 10 ou 20 objetos, mais queria colocar 40 ou 50, mais não to conseguindo, quando altero o número no contador ele não roda, aguardo ajuda...

private void preencheVetor(int[] Vetor) {  
      
            int contador = 0, flag = 0;  
            rnd = new Random();  
      
            while(contador < 20) {  
      
                contador = 0;  
      
                for(int i=0;i<200;i++) {  
      
                    flag = rnd.nextInt(2);  
      
                    if(contador >= 20) {  
                        flag = 0;  
                    }  
                    // REDUNDÂNCIA PARA OS "OBJETOS" SEREM BEM DISTRIBUÍDOS  
                    if(flag == 1) {  
                        flag = rnd.nextInt(2);  
                        if(flag == 1) {  
                            flag = rnd.nextInt(2);  
                            if(flag == 1) {  
                                flag = rnd.nextInt(2);  
                                if(flag == 1) {  
                                    contador += 1;  
                                }  
                            }  
                        }  
                    }  
      
                    Vetor[i] = flag;  
                }  
            }  
        }

5 Respostas

ViniGodoy

Retire aquele código da redundância ali. O Random já gera numeros bem distribuídos.

E já que você trabalha só com 0 e 1, use o Random.nextBoolean().

paulocesar10

Sou novo em java, poderia me dar um exemplo de como coloco isso, pois quando substituo o nextInt por nextBoolean, dá erro…

ViniGodoy

private void preencheVetor(int[] vetor) { Random rnd = new Random(); for (int i = 0; i &lt; vetor.length; i++) { vetor[i] = rnd.nextBoolean() ? 0 : 1; } }

paulocesar10

Está lógica funciona, mais tem como eu limitar a quantidade de objetos que eu quero, por exemplo 50?

ViniGodoy

Claro:

private void preencheVetor(int[] vetor, int max) { Random rnd = new Random(); for (int i = 0; i &lt; vetor.length && i &lt; max; i++) { vetor[i] = rnd.nextBoolean() ? 0 : 1; } }

Criado 15 de novembro de 2011
Ultima resposta 15 de nov. de 2011
Respostas 5
Participantes 2