Lo que he probado:
Código MySQL:
Ver original
-- 1: Al azar... convencional -- 2: Multiplicando por el campo peso -- 3: Restando el valor de RAND de 1.0 y dividiendolo entre el campo peso
Hablando con mi cliente, comentaba que las probabilidades (de la opcion 1) son de 50/50, en lo que estoy completamente de acuerdo, pero los resultados son completamente enemigos de esa supuesta probabilidad y a ojo del cliente, se trata de "un error de programacion".
La opcion 2 reduce mucho las probabilidades para los registros que tienen menor peso, de hecho, es algo exagerado, por lo que ya la tengo descartada.
La opcion 3 parece ser mas efectiva, pero con solo dos registros disponibles no he notado mucha diferencia respecto al RAND()... aunque voy a seguir probandolo.
Otra opcion seria mostrar los anuncios secuencialmente, es decir, guardar en algun lado el ultimo mostrado y pasar al siguiente en la proxima peticion... esto no es tan viable, porque hay otros factores que determinan el anuncio a mostrar como pagina del sitio y procedencia del visitante entre otras variables.
Se aceptan y se agradecen todas las sugerencias, criticas, etc.