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.
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.