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