Foros Programación Cliente

Asignar peso a elementos de un array

6 6 Respuestas Lunes 9 de agosto, 2004
Hola!
Tengo un problemilla:

Estoy haciendo un JavaScript en el que hay un array que guarda direcciones url de imágenes. Al cargar la página escribo en tiempo de ejecución la etiqueta <img y coloco en el atributo src una de las rutas del array aleatoriamente, escogiendo mediante random una de las posiciones del array. Hasta aquí todo normal y sencillo.

El problema surge cuando quiero que algunos de los elementos del array (rutas de imágenes) tengan mayor probabilidad de aparición que otros, que deje de ser aleatorio el modo de selección de la imagen que aparecerá.

La única manera que he encontrado es introducir varias veces el mismo elemento en el array. Así, un elemento que esté dos veces en el array, en distintas posiciones, tendrá en doble de probabilidades de aparecer que otro que aparezca solo una. Este método funciona pero tengo que hacerlo con pasandole como parámetro el peso de cada imagen.

¿Alguien sabe cómo?

saludos!
Registrado desde 11/12/03
Número de posts: 121
  • Avatar de zigotica zigotica Registrado desde 10/05/04 / Número de posts: 1818
    hola tio,

    1. no uses js, usa serverside
    2. mira esto
    Sergi
    z- dinavatar- fotos- !!!
    Publicado hace 8 años
  • Avatar de joseflorido joseflorido Registrado desde 11/12/03 / Número de posts: 121
    ya... es de locos usar javascript para esto :(
    pero el cliente manda (ya sabes, diseño centrado en el jefe... ;))

    Parece que el enlace que me pasas promete, voy a implementar lo que explica en javascript a ver si lo consigo, gracias!
    Publicado hace 8 años
  • Avatar de laminimal laminimal Registrado desde 21/03/04 / Número de posts: 558
    si no lo consigues pegame un toque por mail y te lo intento, amiguete.
    Publicado hace 8 años
  • Avatar de zigotica zigotica Registrado desde 10/05/04 / Número de posts: 1818
    si me apuras mete la imagen en un tag de imagen pero en lugar de ser imagen.jpg que llame a un .php que devuelva la imagen segun el random. tu cliente/jefe no tiene porque estar en desacuerdo si le explicas que el js para eso es una chapuza y le das una solucion valida. digo...
    Sergi
    z- dinavatar- fotos- !!!
    Publicado hace 8 años
  • Avatar de turuto turuto Registrado desde 10/07/03 / Número de posts: 83
    al margen de la tecnologia que se use, lo que planteas es mas un problema de algoritmos, no?
    yo no soy programador, pero hago mis pinitos en as, y el problema lo enfoco desde que tienes una lista, y quieres darle una ponderacion, con lo que son dos datos a introducir por cada elemento.
    de momento no se me ocurre la solucion pero seguro que hay procesos ya establecidos que hagan eso.
    cuando averigue uno lo posteo, y ya se que esto no es solucion pero es un primer pasito a la solucion del problema, no? :)
    Publicado hace 8 años
  • Avatar de joseflorido joseflorido Registrado desde 11/12/03 / Número de posts: 121
    Weno pues ya lo he conseguido :D

    Al final, usando el algoritmo que enlazó sergi he logrado hacerlo en Javascript.

    He subido la versión terminada y una de comprobacion en la que todos los elementos tienen el mismo peso.

    He comentado el código todo lo que he podido y creo que entre la explicación del algoritmo que he utilizado y los comentarios se entiende bien como está hecho. :)

    En el de comprobación he montado un pequeño experimento, repitiendo la función mil veces y haciendo recuento del resultado para poder ver si los porcentajes se corresponden con los pesos.
    Jugad con él y cambiadle los pesos y veréis como varian en proporción.

    El script en conjunto lo que hace es mostrar una imagen enlazada. Con cuatro arrays de la misma longitud define las rutas de las img, los alt, la dirección del enlace y los pesos. Variando estos arrays (eso si, a mano) podemos introducir muchos más elementos y modificar los pesos, siempre manteniendo todos los arrays de la misma longitud.

    Muchisimas gracias a todos!!!! :D
    Publicado hace 8 años