Duvida com numeros randomicos

10 respostas
Y

nao estou conseguindo fazer. eu fiz uma cartela de bingo e tenho que sortear 100 numeros e conferir na tabela.
eu nãpo estou conseguindo. alguem pode me ajudar. obrigado

import javax.swing.*;
public class Bingo {
    public Bingo() {
    }
    public static void main(String[] args) {
       int c[][]=new int[5][5];
       int s[]=new int[60];
       int conl1=0, contl2=0, contl3=0, contl4=0, contl5=0;
       int sort[]=new int[100];
       String cartela="";
       
       for(int i=0;i<5;i++)
       	  for(int j=0;j<5;j++){
       	     double x=Math.random()*59+1;
       	     c[i][j]=(int)x;
       	  }
       for(int i=0;i<5;i++){
       	  for(int j=0;j<5;j++){
       		 cartela=cartela+"        "+c[i][j];
          }
       	  cartela=cartela+"\n";
       }
       	 
        for(int i=0;i<100;i++){
       	     double x=Math.random()*99+1;
       	     	for(int i=0;i<5;i++){
       	  			for(int j=0;j<5;j++){
       	      			if(x[]==c[0][j])
       	      				contl1++;
       	   			}
       			}
        }
       		
       	JOptionPane.showMessageDialog(null,"Sua cartela é:"+"\n"+cartela);
       	
    }
       	   		
}

10 Respostas

Preco

O que exatamente está acontecendo? Explica o problema direitinho, como você tá tentando fazer e qual é o erro que está dando.

(muita gente que poderia te ajudar tá no meio do trabalho e não tá com muito tempo pra ler o código, compilar, rodar e ver o que acontece)

Y

desculpa mas eu não entendi o que tu escreveu

Y

desculpa.
eu tenho que simular um jogo de bingo, ou seja , escolher aleatoriamente 25 numerospara ser a cartela.
depois eu tenho que ir sorteando numeros aleatorios de 0 a 60 e ir verificando na tabela se possui este numero ate preencher uma linha , e mostrar a mensagem linha tal completa e depois mostrar quando a tabela foi completada.

Luiz_Aguiar

Por favor coloque um título que tenha relação com sua dúvida !!!

Y

ja mudei o assunto

Fox_McCloud

Explica melhor.

É um gerador de tabelas?

Como deve ser a tabela? Ela possui 100 numeros? Quantas linhas? Quantas colunas? Os números variam de quanto a quanto? Podem haver números repetidos? Por que não está funcionando?

Y

desculpe
a tabela tem 25 numeros 5x5 e os numeros vao ate 60 , mas a cartela eu ja fiz.
agora eu tenho que simular o sorteio, são 60 numeros nao repetidos.
e ir conferindo na tabela e mostrar quando completar uma linha e quando completar a tabela

sergiotaborda

yuribom:
desculpa.
eu tenho que simular um jogo de bingo, ou seja , escolher aleatoriamente 25 numerospara ser a cartela.
depois eu tenho que ir sorteando numeros aleatorios de 0 a 60 e ir verificando na tabela se possui este numero ate preencher uma linha , e mostrar a mensagem linha tal completa e depois mostrar quando a tabela foi completada.

Vc precisa sortear 25 números de 60, aleatoriamente (‘randomicamente’ no eckssisté)
Ou seja, vc precisa fabricar as cartelas. Lembre-se que não é bom ter cartelas repetidas ( por questões de justiça do jogo)

Depois vc precisa realizar o sorteio e verificar se a cartela tem o numero sorteado.

são duas coisas separadas. considere criar a classe Cartela.

Para mais detalhes dê uma lida nisto

Preco

Tá meio gambiarrento, mas tá didático, acho…
Dá uma olhada, vê se dá pra entender… qualquer dúvida, tamos aí =]

public static void main(String args[]) {
    Calculadora calculadora = new Calculadora();
    calculadora.sorteio();
}
public void sorteio(){
    int[][] cartela = new int[5][5];

    //preenchendo a cartela
    for(int j = 0; j < 5; j++){
        for(int k = 0; k < 5; k++){
            cartela[j][k] = preencheCartela(cartela);
        }		
    }
    //sorteando
    int[][] aux = new int[5][5];
    int[] linha = new int[5];

    while(true){
        double tal = new Random().nextDouble() * 60;
        int numeroSorteado = (int)tal;
        for(int j = 0; j < 5; j++){
            for(int k = 0; k < 5; k++){
                if(cartela[j][k] == numeroSorteado){
                    aux[j][k] = 1;
                }
            }		
        }
        //verificando se a linha já foi preenchida
        for(int j = 0; j < 5; j++){
            int numerosSorteadosPorLinha = 0;
            for(int k = 0; k < 5; k++){
                numerosSorteadosPorLinha += aux[j][k]; 
            }		
            if(numerosSorteadosPorLinha == 5){
                linha[j] = 1;
                JOptionPane.showMessageDialog(this, "Linha cheia: " + j);		    
            }		
        }
	    
        //verifica se a cartela toda já foi preenchida
        int todosNumerosPreenchidos = 0;
        for(int i = 0; i < 5; i++){
            todosNumerosPreenchidos += linha[i];
        }
        if(todosNumerosPreenchidos == 5){
            JOptionPane.showMessageDialog(this, "Cartela cheia");
            System.exit(0);
        }    
    }	
}
public int preencheCartela (int[][] cartela){
    //Aqui tá verificando se o numero a ser inserido 
    //já está na cartela. Se não precisar disso, só fazer 
    //return (int)(Math.random() * 59) + 1;
    boolean podeInserir = true;
    double tal = new Random().nextDouble() * 60;
    int numero = (int)tal;
    for(int j = 0; j < 5; j++){
        for(int k = 0; k < 5; k++){
            if (cartela[j][k] == numero){
                podeInserir = false;
            }
        }		
    }
    if(podeInserir){
        return numero;
    } else{
        return preencheCartela(cartela);
    }
}

[]'s
Té mais

Y
eu fiz uma mescla do meu com o teu mas na hota de informar a linha completa ele faz isso mais ou menos 50 vezes

[flash]import javax.swing.*;

public class Bingo {

public Bingo() {

}

public static void main(String[] args) {

int c[][]=new int[5][5];

int s[]=new int[60];

String cartela="";

for(int i=0;i<5;i++)

for(int j=0;j<5;j++){

double x=Math.random()*59+1;

c[i][j]=(int)x;

}

for(int i=0;i<5;i++){

for(int j=0;j<5;j++){

cartela=cartela+"  “+c[i][j];

}

cartela=cartela+\n";

}
JOptionPane.showMessageDialog(null,"Sua cartela é:"+"\n"+cartela);
   	
   	int[][] aux = new int[5][5];   
int[] linha = new int[5];   

while(true){   
    double tal =Math.random() * 60;   
    int numeroSorteado = (int)tal;   
    for(int j = 0; j < 5; j++){   
        for(int k = 0; k < 5; k++){   
            if(c[j][k] == numeroSorteado){   
                aux[j][k] = 1;   
            }   
        }         
    }   
    //verificando se a linha  foi preenchida   
    for(int j = 0; j < 5; j++){   
        int numerosSorteadosPorLinha = 0;   
        for(int k = 0; k < 5; k++){   
            numerosSorteadosPorLinha += aux[j][k];   
        }         
        if(numerosSorteadosPorLinha == 5){   
            linha[j] = 1;   
            JOptionPane.showMessageDialog(null,"Linha cheia: " + j);             
        }         
    }   
       
    //verifica se a cartela toda  foi preenchida   
    int todosNumerosPreenchidos = 0;   
    for(int i = 0; i < 5; i++){   
        todosNumerosPreenchidos += linha[i];   
    }   
    if(todosNumerosPreenchidos == 5){   
        JOptionPane.showMessageDialog(null, "Cartela cheia");   
        System.exit(0);   
    }       
}

}

}
Criado 1 de julho de 2008
Ultima resposta 1 de jul. de 2008
Respostas 10
Participantes 5