Problema en C - Numeros aleatorios sin que se repitan

Si eres principiante y tienes alguna consulta entra en este foro.
Responder
Mensaje
Autor
Mattux
Mensajes: 1
Registrado: 08/10/2019 9:31 pm

Problema en C - Numeros aleatorios sin que se repitan

#1 Mensaje por Mattux » 08/10/2019 9:34 pm

Tengo que hacer un programa que muestre números aleatorios entre 1 y 90. El problema es que (por ej: sale un 4, y despues de mostrar 20 numeros, sale denuevo el 4)

Código

Código: Seleccionar todo

srand(time(NULL));
  for (i = 0; i < 90; i++)
	{
		int nros = rand() % 90+1;
		printf ("%d\n", nros);
		getch();
	}

Avatar de Usuario
kiko66
Mensajes: 6
Registrado: 11/10/2019 10:51 am

Re: Problema en C - Numeros aleatorios sin que se repitan

#2 Mensaje por kiko66 » 11/10/2019 1:13 pm

hola mattux

como puedes imaginar esta dentro de lo normal que un numero se repita a veces. tambien si el generador de numeros no es bueno repetira muchos numeros o utilizara rangos repetitivos, pero bueno es lo que hay

he probado me parece que esta dentro de lo normal no se que resultado te da a ti, yo probe con esto

Código: Seleccionar todo

#include <stdio.h>
#include <stdlib.h> // para usar srand y rand
#include <time.h>   // para usar time

#define LISTA 200

int main(void) {

    int vector[2][LISTA];
    srand(time(NULL));
    
    for (int i = 0; i < LISTA; i++) // coloco los numeros al azar
        printf ("%d\t ", vector[0][i] = rand() % 90+1);
    getchar();

    for (int i = 0; i < LISTA; i++) vector[1][i]=1; // inicializo el contador de numeros

    for (int i = 0; i < LISTA-1; i++) // reviso cada entrada con todas las siguientes
        for (int ii = i+1; ii < LISTA; ii++) 
            if(vector[0][i] == vector[0][ii]){
                vector[1][i]++; 
                vector[0][ii]=-1;     
            }
    for (int i = 0; i < LISTA; i++) // Visualizo los repetidos
		 if(vector[0][i]>-1 && vector[1][i]>1) 
			  printf("el numero %i existe %i veces en la lista al azar\n",vector[0][i], vector[1][i]);

    getchar();
    return 0;
}
soy nuevo en este foro, y no entiendo que siendo solo de c el codigo no este resaltado con colores ¿¿?? o es que no he acertado a hacerlo ;-)

suerte mattux

daltomi
Mensajes: 354
Registrado: 28/04/2007 7:29 pm
Ubicación: Argentina

Re: Problema en C - Numeros aleatorios sin que se repitan

#3 Mensaje por daltomi » 11/10/2019 9:57 pm

Buenas.
Una posible solución, creo que funciona.

Código: Seleccionar todo

/* C99 */
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

#define RMAX   90

int main(void)
{
   int r[RMAX] = {0};

   srand(time(NULL));

   for (int i = 0; i < RMAX; ++i) {
      
      r[i] = rand() % RMAX + 1;

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

         if (r[i] == r[j]) {
            --i; 
            break;
         }
      }
   }

   for (int i = 0; i < RMAX; ++i)
      printf("%d\n", r[i]);

   return EXIT_SUCCESS;
}
@kiko66 lamentablemente no hay resaltado de sintaxis.

Saludos.

Responder

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 8 invitados