$secil=array();
$sayac="0";
$min="300";
$max="1500";
while(!isset($liste[39])) {
$bul = rand($min,$max);
if (!in_array($bul, $secil)) {
$secil[$sayac] = $bul;
}
}
sort($secil);o verdiğin sistem yerien şu şekilde bir kod oluşturdum. sonucunda $secil dizisinin içerisinde 40 adet sayı küçükten büyüğe sıralanmış halde bulunuyor. bu kod bloğundan sonra while veya for döngüsü ile $secil dizinin içeriğine istediğini yaptırabilirsin, istediğin şekilde kullanabilirisn.
kontrol etmeden yazdım, yazım hatası falan çıkabilir.
bunu çalıştıramadım
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 />";
}
bundada son sayılar şöyle geliyor
Seviye:15 - 14999974
Seviye:16 - 14999975
Seviye:17 - 14999977
Seviye:18 - 14999978
Seviye:19 - 14999979
Seviye:20 - 14999980
Seviye:21 - 14999981
Seviye:22 - 14999982
Seviye:23 - 14999983
Seviye:24 - 14999984
Seviye:25 - 14999985
Seviye:26 - 14999986
Seviye:27 - 14999987
Seviye:28 - 14999988
Seviye:29 - 14999989
Seviye:30 - 14999990
Seviye:31 - 14999991
Seviye:32 - 14999992
Seviye:33 - 14999993
Seviye:34 - 14999994
Seviye:35 - 14999995
Seviye:36 - 14999996
Seviye:37 - 14999997
Seviye:38 - 14999998
Seviye:39 - 14999999
Seviye:40 - 15000000