Contar cuantas veces se repite un numero [duda JAVA]

Iniciado por Norlak, 8 Junio 2012, 12:01 PM

0 Miembros y 1 Visitante están viendo este tema.

Norlak

Buenas a todos. tengo un codigo el cual genera numeros aleatorios y guarda cuantas veces se repite

ejemplo;

Citar
//numeros aleatorios
5
6
7
5
6
7


//en mi array tendria que aparecer algo como

1 --- 0
2 --- 0
3 --- 0
4 --- 0
5 --- 2
6 --- 2
7 --- 2

el problema que tengo es a la hora de incrementar el valor es decir coloco la 1º vez un 1 pero no se añadirle mas  .... perdonen mi ignorancia y gracias por su atencion
Rectificar es de sabios, aprende de tus errores para ser alguien mejor.

[Case]

Lo que yo recomendaría es que el a reglo generado lo ordenaras, y después en tiempo lineal lo recorres y vas contando he imprimiendo cuantas veces se repite.
La ordenacion sera lo principal, por lo que hay 2 posibles formas.

Si de antemano tu sabes que los números generados tienen un limite, esto es, están en un rango. Entonces solamente has un arreglo de tamaño n donde n es el limite de los números generados, y comienza a recorrer el arreglo random, si aparece un 500, entonces en la posición 500 del nuevo arreglo le pones un uno, si este se vuelve a encontrar a un 500 entonces incrementa.

Si no tienen limite, entonces simplemente implementa cualquier algoritmo de ordenamiento, que preferiblemente tenga complejidad de nlogn.



SokarTefnut



int loteria= numero aleatorio
array[numero maximo aleatorio]


// Para contar
do{
loteria= generar numero ();
array[loteria]=array[loteria]++;
} while (la condicion que sea)


// para listar:

for( x=1;x<numero maximo aleatorio;x++)
{
cout << "el numero"+ x +"se ha repetido" +array
  • + "veces"
    }

    El resultado seria aproximadamente así:

    el numero 1 se ha repetido 3 veces
    el numero 2 se ha repetido 4 veces
    el numero 3 se ha repetido 0 veces
    el numero 4 se ha repetido 13 veces




"Saber romper medidas de seguridad no hace que seas hacker, al igual que saber hacer un puente en un coche no te convierte en un ingeniero de automoción"
-- Eric Raymond -- http://en.wikipedia.org/wiki/Eric_S._Raymond

s00rk

#3
Código (java) [Seleccionar]

Random rnd = new Random();
int valor, limite = 7;
int arreglo[] = new int[limite];
msj("Numeros Aleatorios");
for(int x = 0; x < limite; x++)
{
valor = rnd.nextInt(limite)+1;
arreglo[valor-1]++;
msj(valor);
}

msj("\nNumeros Repetidos");
for(int x = 0; x < arreglo.length; x++)
msj("El Numero " + (x+1) + " Se Repite: " + arreglo[x] + " veces");