Ver Mensaje Individual
  #4 (permalink)  
Antiguo 11/04/2011, 06:16
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Serie de Numeros Aleatorios

Cita:
Los numeros que recibo de la funcion los utilizo para asociarlos a imagenes que el mismo administrador sube al servidor, las imagenes que aparescan en pantalla deben ser las mismas para todos los clientes [esto es indispensable] y es para eso que necesito la serie, ya tengo la funcion para la asociacion de imagenes y visualizacion de las mismas, pero debido al presente inconveniente solo lo hago de forma estatica y siempre con las mismas imagenes, solo me falta una funcion que describo para hacer la presentacion y se visualice siempre de una manera mas "dinamica".
Vamos a ver si entendí la idea: Lo que quieres hacer es de un conjunto X de imágenes, cada vez que un cliente se conecte se muestre en forma aleatoria una o mas imágenes. Para lograr eso quieres que se genere un numero aleatorio dentro de un rango cuyas cotas serían el 1, y el mayor identificador de cada imagen. La función recibiría la cota superior y generaría al azar un número igual o menor a él, y de ese modo seleccionarías una imagen...

A mi entender, si lo que quieres es una imagen al azar entre un conjunto, no necesitas esa función, eso se puede hacer perfectamente con una consulta...
Código MySQL:
Ver original
  1. FROM imagenes
  2. ORDER BY rnd()
Si aún así quieres una función, en realidad es bastante elemental...

Código MySQL:
Ver original
  1. DELIMITER $$
  2.  
  3. DROP FUNCTION IF EXISTS `rnd_id` $$
  4. CREATE FUNCTION `rnd_id` (SEED INT) RETURNS INT
  5.   DECLARE BASE INT DEFAULT 0;
  6.   SELECT FLOOR((RAND() * (SEED+1))) INTO BASE;
  7.   IF BASE = 0 THEN
  8.     RETURN 1;
  9.   ELSE
  10.     RETURN BASE;
  11.   END IF;
  12. END $$
  13.  
  14. DELIMITER ;
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)