Descriere:Ca sa obtineti un numar aleator in PHP, se poate folosi functia mt_rand() (exista si functia rand(), dar conform documentatiei PHP, mt_rand() e mai rapida).
Download:
Autor:
Sursa (Link-ul oficial): Propria parere:Nu l-am incercat.
Tutorialul:
- Exemplu:
Cod: Selectaţi tot
$nr = mt_rand();
echo $nr;Cod: Selectaţi tot
$nr = mt_rand(1000, 9999);
echo $nr;Daca aveti un array cu numerr si vreti sa obtineti un numar aleator din acel array, se poate aplica functia array_rand(). Aceasta functie returneaza cheia unui element din array ales aleator.
- Exemplu:
Cod: Selectaţi tot
$nrs = array(123, 567, 4556, 34245, 78);
$rk = array_rand($nrs);
$nr = $nrs[$rk];
echo $nr; // 4556Cod: Selectaţi tot
$nrs = array(123, 567, 4556, 34425, 78, 789);
$rks = array_rand($nrs, 2); // contine 2 chei aleatoare (2, 5)
echo $nrs[$rks[0]]; // 4556
echo $nrs[$rks[1]]; // 789Daca vreti sa obtineti un numar aleator dintre un minim si maxim, dar cu cifre distincte, fara ca vreo cifra sa se repete in numarul ales aleator, puteti folosi urmatoarea functie.
Cod: Selectaţi tot
<?php
// returneaza un numar aleator intre $min si $max, cu cifre distincte
function getDistinctNr($min, $max) {
// obtine numar aleator cu cifre diferite ( www.coursesweb.net )
$nrstr = (string) mt_rand($min, $max); // numar aleator transformat in sir
$n_nr = strlen($nrstr); // numarul de caractere
$setnr = array(); // va retine cifrele ce formeaza numarul aleator returnat
// parcurge caracterele din $nrstr ca sa retima in $setnr doar cifrele distincte
// daca cifra e deja in $setnr, parcurge numerele de la 0 la 9 ca sa o inlocuiasca cu alt numar distinct
for($i=0; $i<$n_nr; $i++) {
if(!in_array($nrstr[$i], $setnr)) $setnr[] = $nrstr[$i];
else {
for($i2=0; $i2<10; $i2++) {
if(!in_array($i2, $setnr)) {
$setnr[] = $i2;
break;
}
}
}
}
return implode('', $setnr);
}
// Test
$nr = getDistinctNr(1000, 9999);
echo $nr;
?>
