Rand с различной вероятностью?
Если плотность вероятности равномерно возрастает, значит функция распределения возрастает по параболе. Значит в итоге нужное число можно получить по формуле «1+sqrt(rnd(10000))».
for($i=0; $i<1000; $i++){
$chance = 30;
if (rand(1,100)<=$chance){
echo "yeah\r\n";
}else{
echo "no chance\r\n";
}
}
Вот простейший способ оказывается