Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Serie de Numeros Aleatorios

Estas en el tema de Serie de Numeros Aleatorios en el foro de Mysql en Foros del Web. Hola a todos, explico mi cuestion brevemente: Estoy desarrollando una aplicacion cliente-servidor y me eh topado con el problema de que tengo que generar una ...
  #1 (permalink)  
Antiguo 10/04/2011, 21:07
 
Fecha de Ingreso: abril-2011
Ubicación: Mazatlan
Mensajes: 2
Antigüedad: 13 años
Puntos: 0
Pregunta Serie de Numeros Aleatorios

Hola a todos, explico mi cuestion brevemente:

Estoy desarrollando una aplicacion cliente-servidor y me eh topado con el problema de que tengo que generar una serie de numeros aleatorios, pero no puedo generarlas dentro de la aplicacion pues un cliente distinto o todos los clientes conectados deben tener la misma serie para trabajar con ella, es por eso que necesito una funcion dentro de mysql, esta funcion me recibiria como parametro un numero que me indicaria el numero de "numeros" que necesito, es decir, si le mando como parametro un 10, la funcion me tendria que generar una lista de numeros del 1 al 10 [1,2,3,4,5,6,7,8,9,10] lo cual no veo bastante dificil, lo dificil lo veo al tratar de aleatorizar la lista de numeros, entonces si le mande el parametro de 10 me regresaria una serie aleatoria con numeros del 1 al 10 [2,3,9,5,8,1,7,6.....], tengo conocimientos basicos de mysql pero no logro realizar la funcion correctamente y ya me eh quebrado bastante la cabeza y eh dedicado bastante tiempo tratando de solucionarlo, la verdad agradeceria mucho cualquier ayuda, sugerencia, codigo que me ayude a resolver este problema. Si no es mucho pedir quisiera como retorno un string o cadena con los numeros separados por coma y asi me seria mas facil manipularlos en un array dentro de la aplicacion del cliente.
  #2 (permalink)  
Antiguo 10/04/2011, 21:29
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Serie de Numeros Aleatorios

Algunas dudas:
Si cada cliente puede mandar a esa función su propio parámetro de cantidad de valores a generar, ¿como te aseguras que todos los clientes accedan a la misma lista de valores, como dices?
Sería lo mismo que crearla por programación.
Y si la lista está efectivamente accesible para todos (interesante sería saber quién la genera entonces y dónde la guardas), ¿Tiene algún impacto en tu sistema que dos o más clientes accedan al mismo valor de la lista?

¿Para qué usas estos números "aleatorios"?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 10/04/2011, 22:37
 
Fecha de Ingreso: abril-2011
Ubicación: Mazatlan
Mensajes: 2
Antigüedad: 13 años
Puntos: 0
Respuesta: Serie de Numeros Aleatorios

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Algunas dudas:
Si cada cliente puede mandar a esa función su propio parámetro de cantidad de valores a generar, ¿como te aseguras que todos los clientes accedan a la misma lista de valores, como dices?
Sería lo mismo que crearla por programación.
Y si la lista está efectivamente accesible para todos (interesante sería saber quién la genera entonces y dónde la guardas), ¿Tiene algún impacto en tu sistema que dos o más clientes accedan al mismo valor de la lista?

¿Para qué usas estos números "aleatorios"?
Hola y muchas gracias por interesarte.

El valor que se mandaria como parametro a la funcion esta guardado dentro de la base de datos y no lo mandaria el cliente, solo el administrador tiene las facultades de modificarlo a travez de otra interfaz, entonces efectivamente la serie se guardaria dentro de una tabla para posteriormente ser consultada por todos los clientes en linea, realmente tiene el funcionamiento de un juego la aplicacion y es por eso que necesito que sean numeros aleatorios pero uniformes [que no sean repetidos y tampoco haya faltantes].

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".
  #4 (permalink)  
Antiguo 11/04/2011, 06:16
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
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)

Etiquetas: numeros, serie, aleatoria
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 14:04.