buna ziua
Asi dori sa aflu cum pot genera un nr la intamplate cu rand(), cu cifre distincte ?
Multumesc
Numar aleator cu cifre distincte
-
- Mesaje:157
Numar aleator cu cifre distincte
MarPlo
Mesaje:4343
Salut
Din documentatia de la PHP, functia mt_rand() e mai rapida decat rand() .
Daca vrei sa obtii un numar aleator cuprins intre un minim si maxim, poti folosi asa:
Daca vrei un numar aleator dintr-o lista de numere create intr-un array, poti folosi array_rand() , ca in acest exemplu:
Din documentatia de la PHP, functia mt_rand() e mai rapida decat rand() .
Daca vrei sa obtii un numar aleator cuprins intre un minim si maxim, poti folosi asa:
Cod: Selectaţi tot
$min = 123;
$max = 123456;
echo mt_rand($min, $max);
Cod: Selectaţi tot
$nrs = array(123, 345, 67, 894, 673, 128, 9864, 3678, 654);
$nr = $nrs[array_rand($nrs)];
echo $nr;
Komfort
Mesaje:157
Da dar...ma refer la generarea unui numar de 4 cifre rand(1000,9999); problema e ca ar putea sa-mi dea si un numar cu 2 sau 3 sau cu toate 4 cifre la fel.
Eu vreau distincte intre ele. Multumesc.
Edit:
Am adaugat intrun array 9000 de numere, oare sa fie vreo problema in a extrage unul aleator din el, cu:
Gata am rezolvat.
Multumesc.
Eu vreau distincte intre ele. Multumesc.
Edit:
Am adaugat intrun array 9000 de numere, oare sa fie vreo problema in a extrage unul aleator din el, cu:
Cod: Selectaţi tot
$nr = $numere[array_rand($numere)];
Multumesc.
MarPlo
Mesaje:4343
Se poate folosi si urmatoarea functie, daca vrei un cod mai compact, si sa obtii numarul intre un $minim si $maxim.
Cod: Selectaţi tot
<?php
// function to get aleator number with no repeat digits ( www.coursesweb.net )
// returns an aleator number between $min and $max, with distinct digits
function getDistinctNr($min, $max) {
$nrstr = (string) mt_rand($min, $max); // get aleator number, converted into string
$n_nr = strlen($nrstr); // number of characters
$setnr = array(); // to store distinct digits that will form the returned number
// traverse $nrstr to add in $setnr its distinct digits
// if number already in $setnr, traverse 0 to 9 to define another distinct number
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;
?>
Subiecte similare
- Afisare numar cel mai mare dintr o coloana
PHP - MySQL - XML Primul mesaj
Bună MarploUltimul mesaj
Vreau să extrag din coloan pret cel mai mare numar ca de exemplu 4444.
Mie imi afisează 54 în loc de 4444, dacă în loc de 4444 modific...
Am schimbat `pret` varchar(20) DEFAULT NULL in `pret` int(11) NOT NULL ca la tine si merge.
Multumesc