Hola,
¿alguien sabe de algo parecido?
Gracias!
| |||
Pues hombre, no es muy difícil digamos... Creas un array temporal del mismo tamaño, luego vas recorriendo el original y aleatorizando un número de 0 al tamaño del array menos uno, y usas el número para copiar este en el array temporal. También debes de guardar si está siendo usado cada posición, en ese caso, sumas uno al número aleatorio. (No saques uno nuevo porque si es un array grande de unos 500 elementos, y sólo te queda 1, pues imagínate la de tiempo que puede estar el programa intentando dar en la diana). |
| |||
Si tomamos como base que el nombre del array es array y que el numero de elementos es N entonces en seudo-codigo: 1) Asignar el valor 0 a la variable contador. 2) Generar un valor aleatorio en el rango 0 a N - 1 3) Si el valor aleatorio es igual a la variable contador regresar al paso 2 4) Intercambiar el elemento array[aleatorio] y array[contador] 5) Incrementar contador en uno 6) Si el valor de contador es menor que N regresar al paso 2. Un saludo |
| |||
Muchas gracias a los dos. Es lo q pensé en un primer momento, pero al tratarse de arrays grandes al crear un número aleatorio era muy posible que ya estuviera usado por un paso anterior. Con la idea de Max de sumar 1 es perfecto. Muchas gracias ;). |
| |||
Cita: De nada
Iniciado por simonvlc Muchas gracias a los dos. Es lo q pensé en un primer momento, pero al tratarse de arrays grandes al crear un número aleatorio era muy posible que ya estuviera usado por un paso anterior. Con la idea de Max de sumar 1 es perfecto. Muchas gracias ;). ![]() |