Generar aleatorios

Iniciado por Lody, 17 Octubre 2017, 23:50 PM

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

Lody

Hola, necesito comparar tres números que no se repitan entre sí, y que se generen de forman aleatoria, es decir que no impriman 111, 221, etc,
Quiero hacerlo con arreglos para compararlos pero no he encontrado la forma correcta para terminarlo.


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


int main(){
srand(time(NULL));
int arr[4];
int num;

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

do{
arr[i]=1+rand()%9;
}while(arr[0]==arr[1] || arr[0]==arr[2] || arr[0]==arr[3]);
//Falta comparar todos los arr[i]

printf("%d", arr[i]);

}
}

srWhiteSkull

#1
Sencillo, has que esos tres valores que se generan al random pasen dentro de dos while que a su vez estén dentro de un while principal (tal como tienes). Cada bucle while anidado se encargará de los siguientes "dígitos", el segundo y el tercero, y ambos se repetirán mientras el valor del anterior dígito no sea igual al generado en ese bucle anidado.

El primer dígito no requiere condición o bucle, simplemente lo generas, será la referencia para los dos siguientes. El segundo se genera dentro de un while y comprueba que no es igual al primero, de ser así sale del while y pasa al siguiente while (y último) donde comrueba que el segundo digito sea diferente al generado dentro de este. De ser así sale del while y continua el proceso en el while principal o for.

Para unir los tres digitos solo tienes que aplicar una sencilla fórmula :

n = pd *100 + sd*10 + td