PHP kullanarak tekrar olmadan rasgele sayılar üretmenin 3 yöntemini göstereceğim. Bu örnek için 1 ila 10 arasında 5 rastgele sayı üretiyoruz.
Yöntem 1:
rand() fonksiyonunu kullanarak rastgele bir sayı üretiyoruz ve çift döngüler kullanarak kopya olup olmadığını kontrol ediyoruz.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | <pre> <?php for ($i=0; $i<=5; $i++) { $sayilar[$i] = rand(1,10); for ($j=0; $j<$i; $j++) { while ($sayilar[$j] == $sayilar[$i]){ $sayilar[$i] = rand(1,10); $j = 0; } } } sort($sayilar); print_r($sayilar); ?> </pre> |
Yöntem 2:
“contain(arg1, arg2)” adında yeni bir yardımcı işlev oluşturuyoruz. Burada arg1 = bir sayı dizisi, arg2 = bir sayı kabul edilir.
“contain” işlevi, sayının dizide olup olmadığını kontrol eder. Sonuç olumlu ise true değilse false döndürür. Buna göre diziye değerin eklenip eklenmeyeceğine bakarız. Bu yöntem çok daha açıktır. Gelecekte daha zor problemleri ele geçirirken ve böylece uzun vadede spagetti kodundan kaçınırken düşünme şekli daha yararlı olacaktır.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | <pre> <?php //kontrol fonksiyonu function contain($liste, $sayi) { for ($k=0; $k<sizeof($liste); $k++) { if ($liste[$k] == $sayi) return true; } return false; } $liste[0] =[]; for ($i=1; $i<=5; $i++) { $sayilar[$i] = rand(1,10); while (contain($liste, $sayilar[$i])) { $sayilar[$i] = rand (1,10); } $liste[$i] = $sayilar[$i]; //append into the array } sort($sayilar); print_r($sayilar); ?> </pre> |
Yöntem 3:
Bunun, rasgele sayıları tekrar olmadan uygulamanın en kolay / en tembel yolu olduğunu söylemeliyim.
1. 1’den 10’a kadar bir sayı dizisi oluşturmak için PHP’nin range() işlevini kullanıyoruz.
2. Siparişleri karıştırmak için PHP’nin shuffle() işlevini kullanın.
3. Aşağıdaki for döngüsünü kullanarak dizideki ilk 5 öğeyi alırız.
4. Şimdi çoğaltmadan 1 ile 10 arasında 5 rasgele üreten sayı var!
1 2 3 4 5 6 7 8 9 10 11 12 13 | <pre> <?php $sayilar=range(1,10); shuffle($sayilar); for ($i=0; $i<5; $i++) { $sonuc[$i]=$sayilar[$i]; } sort($sonuc); print_r($sonuc); ?> </pre> |
Örnek Kod Çıktısı:
Yukarıdaki tüm yöntemler mükemmel çalışır. En çok tercih ettiğinizi seçin ve kullanın. İşte hepsi bu kadar.
Yorum Yap