La función rand() admite dos argumentos, el mínimo y el máximo.
Cita: ¿Algun codigo en PHP así rápido para ir metiendonos en materia y que vayamos experimentando?
Ahora, el porcentaje tampoco lo puedes controlar pero al menos puedes tener rangos:
Suponiendo que tienes una lista completa de los rangos por porcentaje, sólo resta obtener dicho "porcentaje" inicial:
¿Se entiende la idea?