Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

MySQL:selecione entrada aleatória, mas peso para certas entradas


Esse cara faz a mesma pergunta. Ele diz o mesmo que Frank, mas as ponderações não saem direito e nos comentários alguém sugere usar ORDER BY -LOG(1.0 - RAND()) / Multiplier , que em meus testes deu resultados praticamente perfeitos.

(Se algum matemático quiser explicar por que isso está correto, por favor me esclareça! Mas funciona.)

A desvantagem seria que você não poderia definir a ponderação como 0 para desativar temporariamente uma opção, pois acabaria dividindo por zero. Mas você sempre pode filtrá-lo com um WHERE Multiplier > 0 .