Ver Mensaje Individual
  #5 (permalink)  
Antiguo 05/09/2013, 15:15
jurena
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: Rand con ProbabilidadesDefinidas

No sé, no lo veo fácil, pero ofreceré otras dos opciones, aunque un tipo de letras como yo sabe poco de estas cuestiones de probabilidades y seguro que meteré la pata. Dos ocurrencias mías.
Lo que hace RAND() es asignar un número decimal entre 0 y 1 aleatorio para cada registro. Luego ordenas y limitas por el primero. En realidad el orden es ascendente, pero si eliges el último seguirá siendo lo aleatorio que es un RAND() de MySQL. Si creas un campo control de 0 a 1 decimal, podrías multiplicar por ese decimal, que tendrá que ser proporcional y ordenar DESC y hacer el limit 1.
Código MySQL:
Ver original
  1. SELECT campo, (RAND() * numcontrol) valor FROM tutabla ORDER BY valor DESC LIMIT 1
Pero si te soy sincero no sé si eso será lo aleatorio que debería ser. Si quieres que sea realmente aleatorio inserta un número de registros proporcional, repitiendo las veces que sea necesario un término.
Imaginemos que valor1 quieres que sea un 30 por ciento más probable que los demás. Pues insertas 3 veces el registro con ese valor sobre un total de 10 valores, y luego ordenas por BY RAND() y LIMIT 1. Ese sí sería, pienso, un modo mejor de hacerlo. Un ejemplo que, creo, será más esclarecedor. Si quieres que para valor1 sea 0.8, para valor2 1.2, para valor3 0.2, bastará con que halla 80 registros con valor1, 120 con valor 2, 20 con valor3. Esa sería la idea.

Última edición por jurena; 06/09/2013 a las 00:54