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

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Función rand sin repeticiones
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Función rand sin repeticiones  (Leído 2,218 veces)
alejandro70

Desconectado Desconectado

Mensajes: 5


Ver Perfil
Función rand sin repeticiones
« en: 27 Julio 2015, 05:19 am »

Que tal chic@s del foro, pues supongo que asunto lo explica todo, quiero hacer que la funcion rand me de valores del 0 a x número al azar pero sin repetir ninguno, además quiero usar una semilla diferente usando srand(int i), pero no srand(time(0)).
Gracias por la ayuda   ;-)


En línea

simorg
Ex-Staff
*
Desconectado Desconectado

Mensajes: 8.301



Ver Perfil
Re: Función rand sin repeticiones
« Respuesta #1 en: 27 Julio 2015, 05:26 am »

Citar
quiero hacer que.............

Pues hazlo....aquí no lo haran por tí.

Publica tu codigo y pregunta las dificultades que tengas.


Saludos.


En línea

alejandro70

Desconectado Desconectado

Mensajes: 5


Ver Perfil
Re: Función rand sin repeticiones
« Respuesta #2 en: 27 Julio 2015, 22:13 pm »

Si claro perdon   :¬¬
Aun asi ya lo resolví. En cuanto vuelva a prender la pc subo el código.



Bueno el codigo es el siguiente:

Código:
  void random(int vector[28]){

int i, j, repeticion, n;

for(i=0;i<=27;i++){
n=rand() % 28;
repeticion=0;

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

if(n==vector[j]){
repeticion=1;
break;
}
}

if(repeticion==1){
i--;
}else{
vector[i]=n;
}
}
}

Bueno el vector que se le pasa en forma de parametro es solo para almacenar los numeros al azar.
« Última modificación: 29 Julio 2015, 10:23 am por Eternal Idol » En línea

do-while


Desconectado Desconectado

Mensajes: 1.276


¿Habra que sacarla de paseo?


Ver Perfil
Re: Función rand sin repeticiones
« Respuesta #3 en: 29 Julio 2015, 09:37 am »

¡Buenas!

¡Ese código es muy ineficiente!

Cuantos más elementos hayas obtenido más difícil será que rand te devuelva un elemento no repetido.

En este caso sería mucho más eficiente hacer lo siguiente:

Para i ente 0 y MAX - 1
    n = aleatorio (0, MAX - 1);

    si(i != n)
       intercambiar(v(i),v(n));
    fin si
Fin Para

En MAX iteraciones tienes un vector reordenado de forma aleatoria.

¡Saludos!
En línea

- Doctor, confundo los números y los colores.
- Vaya marrón.
- ¿Marrón? ¡Por el culo te la hinco!
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Funcion Rand() con strings en PHP
PHP
Riki_89D 5 9,943 Último mensaje 9 Marzo 2009, 14:37 pm
por cassiani
Programa funcion rand()
Programación C/C++
hocius 4 3,166 Último mensaje 9 Octubre 2010, 22:30 pm
por hocius
Ayuda con la función rand.
Programación C/C++
Felipe_Henriquez 5 4,791 Último mensaje 31 Octubre 2011, 20:20 pm
por Queta
Sobre la función rand()
PHP
#Aitor 8 3,168 Último mensaje 3 Enero 2015, 18:16 pm
por MinusFour
Función que devuelve número repeticiones
Programación C/C++
Palante 4 2,166 Último mensaje 13 Febrero 2017, 20:12 pm
por naidmen
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines