Gracias a todos por vuestro esfuerzo, pero mientras estaba en el autobus se me ha ocurrido de otra forma; por ejemplo si hay un 80 por ciento de posibilidades, hacer un array con 100 elemento y 80 que tengan el valor 1 y otras 20 el valor 0. Despues con la funcion array_rand sacar un valor aleatorio.
Un saludo
Código PHP:
function prob($p) {
for($i=1;$i<=100;$i++) $pos[$i] = ($p<$i) ? 0 : 1;
return $pos[array_rand($pos)];
}