Foros del Web » Programando para Internet » Javascript »

Hacer un random con array sin que se repita.

Estas en el tema de Hacer un random con array sin que se repita. en el foro de Javascript en Foros del Web. Tengo cargado un listado en un array con los numeros del uno al cinco, la idea es que al cargar la pagina muestre todo el ...
  #1 (permalink)  
Antiguo 16/04/2012, 12:37
 
Fecha de Ingreso: octubre-2011
Mensajes: 153
Antigüedad: 12 años, 5 meses
Puntos: 7
Hacer un random con array sin que se repita.

Tengo cargado un listado en un array con los numeros del uno al cinco, la idea es que al cargar la pagina muestre todo el arreglo de los cinco numeros del uno al cinco pero con distinto orden.

Ahora el problema que me ocurre queda aleatorio pero se repiten los numeros, ¿como puedo evitar que se repitan los numeros?

aca tengo el codigo.

Código Javascript:
Ver original
  1. <html>
  2. <head>
  3. <title>Midemo1</title>
  4. <script language = "javascript">
  5.  
  6. var misimagenes=["imagen1.png","imagen2.png","imagen3.png","imagen4.png","imagen5.png"];
  7.  
  8. for (i=0;i< misimagenes.length;i++){
  9.  
  10.     var rango_superior = 1;
  11.     var rango_inferior = 5;
  12.     var aleatorio = Math.floor(Math.random()*(rango_superior-(rango_inferior-1))) + rango_inferior;
  13.  
  14.     document.write("<img src="+misimagenes[aleatorio]+">")     
  15.  
  16. }
  17.  
  18. </script>
  19. </head>
  20. <body>
  21.  
  22. </body>
  23. </html>
__________________
Mi mail: [email protected]
  #2 (permalink)  
Antiguo 16/04/2012, 12:48
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: Hacer un random con array sin que se repita.

buenas...
una forma que puedes optar es hacerle un shuffle al array y luego iteras el array en orden. aunque la iteración es secuencial, cada elemento elemento está reoganizado aleatoriamente. un algoritmo bien corto para el shuffle – aunque he escuchado que no es efectivo. en todo caso, se garantiza que no repetiras el mismo elemento.

Código:
Array.prototype.shuffle = function(){
this.sort(function(){ return Math.round(Math.random()) -.5; });
return this;
};
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #3 (permalink)  
Antiguo 16/04/2012, 14:05
 
Fecha de Ingreso: octubre-2011
Mensajes: 153
Antigüedad: 12 años, 5 meses
Puntos: 7
Respuesta: Hacer un random con array sin que se repita.

Hola, mira lo hice y me funciona super bien, pero como encuentran el codigo ?

lo que hice fue lo siguiente:

1-Cargue un listado de numeros al arreglo.
2-El arreglo lo convertí en random para que cambie el orden, sin que se repitan.
3-Separe el arreglo a numero individual //quizás aquí esta mal, queda poco dinámico si se desea agregar otro numero al arreglo.
4-Cree una función que convierta el numero a imagen.

Código Javascript:
Ver original
  1. <html>
  2. <head>
  3. <title>Test1</title>
  4. <script language = "javascript">
  5.  
  6. function randomSinRepetir(a,b) {
  7.     return( parseInt( Math.random()*10 ) %2 );
  8. }
  9.  
  10. var misimagenes = new Array(1, 2, 3, 4, 5);
  11. var imagen = misimagenes.sort(randomSinRepetir).toString();
  12.  
  13. imagen1 = imagen[0];
  14. imagen2 = imagen[2];
  15. imagen3 = imagen[4];
  16. imagen4 = imagen[6];
  17. imagen5 = imagen[8];
  18.  
  19.  
  20. function mostrarimagen(imagen)
  21. {
  22.     if(imagen == 1)
  23.     {
  24.         imagen = "imagen1.png";
  25.     }
  26.     else if(imagen == 2)
  27.     {
  28.         imagen = "imagen2.png";
  29.     }
  30.     else if(imagen == 3)
  31.     {
  32.         imagen = "imagen3.png";
  33.     }
  34.     else if(imagen == 4)
  35.     {
  36.         imagen = "imagen4.png";
  37.     }
  38.     else if(imagen == 5)
  39.     {
  40.         imagen = "imagen5.png";
  41.     }
  42.  
  43.     document.write("<img src="+imagen+"/>");   
  44. }
  45.  
  46. mostrarimagen(imagen1);
  47. mostrarimagen(imagen2);
  48. mostrarimagen(imagen3);
  49. mostrarimagen(imagen4);
  50. mostrarimagen(imagen5);
  51.  
  52. </script>
  53. </head>
  54. <body>
  55.  
  56. </body>
  57. </html>
__________________
Mi mail: [email protected]
  #4 (permalink)  
Antiguo 16/04/2012, 19:16
(Desactivado)
 
Fecha de Ingreso: noviembre-2002
Ubicación: Ciudad Autónoma de Buenos Aires
Mensajes: 2.367
Antigüedad: 21 años, 5 meses
Puntos: 317
Respuesta: Hacer un random con array sin que se repita.

Hace algunos años estuvimos tratando de inventarle algunos métodos más al array, y entre ellos estaba el "Shuffle".

Manipular array

Pero creo que ninguno era tan económico como el tuyo, zerokilled. Lo voy a estudiar, porque a primera vista no me sale.

Aprovecho y dejo otro enlace con un ejemplo.

galeria de imagenes aleatorias

Saludos
furoya

Etiquetas: html, random
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:03.