Liczby losowe
Liczby losowe mają niesamowicie szerokie zastosowanie w programowaniu serwisów www.
Przydają się przy generowaniu losowych haseł, tymczasowych kodów weryfikujących lub linków
aktywacyjnych. Wyświetlanie różnych cytatów, czy losowych produktów w sklepie również opiera
się o liczby losowe.
Tyle słowem wstępu, czas na bliższe przyjrzenie się generowaniu liczb losowych:
<?php
echo rand();
?>
Powyższy skrypt spowoduje wyświetlenie się na ekranie liczby z przedziału od 0 do
getrandmax() - zdefiniowanego maksimum. Dla systemów z rodziny Windows wynosi ono 32768,
natomiast w systemach Unixowych 2147483647.
Wyznaczanie zakresu liczb
W większości przypadków chcemy wyznaczyć przedział, z którego ma zostać wylosowana
liczba. PHP udostępnia nam taką możliwość. Wystarczy podać dwa argumenty w wywołaniu
funkcji rand(), minimalną i maksymalną wartość.
Przykład 1
<?php
$i = rand(15,30);
echo "Wylosowana liczba z zakresu (15 - 30) to $i";
?>
Przykład 2
<?php
$a = rand(3,9);
echo "Wylosowana liczba z zakresu (3 - 9) to $a";
?>
Powyższa instrukcja oznacza, że ma być losowana liczba z zakresu od 3 do 9 włącznie. Pierwszy
argument to minimalna liczba, jaką można wybrać, drugi stanowi liczbę maksymalną. Argumentami
mogą być oczywiście zmienne, elementy tablicy lub wyniki liczbowe innych funkcji. Można też
wykombinować losowanie zakresów (poszczególnych argumentów), aby zminimalizować
prawdopodobieństwo wylosowania konkretnej liczby.
Zastosowanie funkcji rand()
Oto przykładowe wykorzystanie funkcji rand():
Rotacja grafiki - w oparciu o ilość elementów wybieramy 1 losowy element,
Losowe porady (itp..) - w oparciu o ilość porad/artykułów wybieramy jeden losowy,
Rotacja elementów zwykłych - - dowolny napis, tekst, kolor itp. - może być wybrany
losowo...
Interpretacja powyższych punktów zależy głównie od pomysłowości programisty czy webmastera.
Należy pamiętać, że prawdopodobieństwo powtórzeń jest dosyć spore, ale zależy głównie od zakresu
oraz od skryptu programisty. Wylosowane liczby można przechowywać w dowolnej bazie danych i w
razie powtórzenia ponowić losowanie.
Losowanie cytatów
<?php
$cytat[] = "Życie jest piękne.";
$cytat[] = "Kto mieczem wojuje ten od miecza ginie.";
$cytat[] = "W marcu jak w garncu.";
$cytat[] = "Kota nie ma myszy harcują.";
$cytat[] = "Jak Kuba Bogu tak Bóg Kubie.";
echo $cytat[rand(0,sizeof($cytat)-1)];
?>
Losowanie obrazków
<?php
$img[] = "1.jpg";
$img[] = "2.jpg";
$img[] = "3.jpg";
echo "<img src=\"".$img[rand(0,sizeof($img)-1)]."\" alt=\"obrazek\">";
?>
Losowanie koloru czcionki
<?php
$kolor[] = "#FFFFFF"; // biały
$kolor[] = "#000000"; // czarny
$kolor[] = "#FF0000"; // czerwony
$kolor[] = "#008000"; // zielony
echo "<p style=\"color:".$kolor[rand(0,sizeof($kolor)-1)]."\">test kolorów</p>";
?>
Ćwiczenie:
Napisz skrypt, który losuje z następujących typów zmiennych:
liczby całkowite (integer)
obrazki
kolor czcionki
ciągi (string)
tablice (array)
obiekty (object)