O algoritma ile her seferinde 40 sayı üretilemeyebilir.rand max a çok yakın bir değer bulduğunda sıkıntı olacaktır.aşağıdaki işini görebilir.Ama rand ile max a yakın değer alırsa son sayılar ard arda gelecektir yine.hiç üretmemesinden iyidir belkide

$min=300000;
$max=15000000;
$toplam=40;
for($i=1;$i <= $toplam; $i++) {
    $m=$toplam-$i;
    $min=rand($min+1,$max-$m);
    echo "Seviye:".$i." - ".$min."<br />";
}