elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  ¿Como generar números aleatorios sin repetir en este programa que hice en C?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: ¿Como generar números aleatorios sin repetir en este programa que hice en C?  (Leído 5,875 veces)
emilosther

Desconectado Desconectado

Mensajes: 1


Ver Perfil
¿Como generar números aleatorios sin repetir en este programa que hice en C?
« en: 23 Diciembre 2014, 21:15 pm »

En este programa hecho en C tengo un vector o array que contiene 12 números diferentes, y con rand lanzo aleatoriamente los números que contiene ese array, el problema surge cuando algún numero de ese array se repite, lo cual no quiero que suceda.

aquí mi código:

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

void aleatorio();

int main()
{
    printf("aqui vemos un ejemplo de numeros aleatorios que no se repiten\n\n");
    aleatorio();
    printf("\n");
    system("PAUSE");
    return 0;
}

void aleatorio()
{
    int v[] = {54,65,43,6,5,32,100,34,76,22,13,9};
    int numero;
    int i;
    int semilla=time(NULL);
    srand(semilla);

    for(i=0; i<12; i++){
        numero=rand()%12;
        printf("%i\n",v[numero]);
    }
}

Soy un novato en esto de la programación, por lo que hay cosas que se me dificultan mucho a la hora de crear algo nuevo, así que les agradecía mucho si me dieran una mano :D


En línea

ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: ¿Como generar números aleatorios sin repetir en este programa que hice en C?
« Respuesta #1 en: 23 Diciembre 2014, 21:19 pm »

Por ejemplo, puedes hacer: "Mientras el número nuevo número generado ya exista en el array, se le suma 1"

EDITO: Entendí mal la pregunta.

Otra posibilidad, podría ser ir eliminando los números ya elegidos;


« Última modificación: 23 Diciembre 2014, 22:35 pm por ivancea96 » En línea

_Enko


Desconectado Desconectado

Mensajes: 538



Ver Perfil WWW
Re: ¿Como generar números aleatorios sin repetir en este programa que hice en C?
« Respuesta #2 en: 23 Diciembre 2014, 22:18 pm »

O puedes hacer como se hacen con los naipes, los barajas.
Código
  1. int v[] = {54,65,43,6,5,32,100,34,76,22,13,9};
  2. for(i=0; i<12; i++){
  3.        numero=rand()%12; //tomas una posicion aleatoria
  4.        temp  = v[numero]; // intercambias elemento v[i] con otro elemento aleatorio
  5.        v[numero] = v[i];
  6.        v[i] = temp;
  7.    }
  8. //aqui los numeros de v[] estarían desordenados aleatoriamente
  9. for(i=0; i<12; i++){
  10.        printf("%i\n",v[i]);
  11.    }
  12.  
  13.  

Es decir, en vez de elegir aleatoriamente desde los elementos del vector, intercambias la posicion aleatoriamente de los elementos del vector. Tal y como se hace con una baraja de naipes.

Saludos
« Última modificación: 23 Diciembre 2014, 22:30 pm por _Enko » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines