$array=array(
'8,9,10,11' => 25,
'12,13,14,15,16' => 35,
'8,9,10,11' => 40
);
// . Для каждого дня:
$rand=mt_rand(0,99);
$sum=0;
foreach($array as $key=>$value) {
if (($rand>=$sum)&&($rand<($sum + $value))) {
// Временной промежуток этот $value
// Если надо снова случайный час, то
$hour = explode(',',$key);
shuffle($hour);
$hour = array_shift($hour);
// $hour - определеный час
break;
}
}