To get a
random number in PHP, you can use the
mt_rand() function (there is also
rand() function, but, according to PHP documentation,
mt_rand() is faster).
- Example:
$nr = mt_rand();
echo $nr;
• To get a random number between a minimum and maximum number, use this syntax:
mt_rand($min, $max).
$nr = mt_rand(1000, 9999);
echo $nr;
Random numbers from array
If you have an array of numbers, and you want to get an random number from that array, you can use the
array_rand() function. This function returns the key for a random entry.
- Example:
$nrs = array(123, 567, 4556, 34245, 78);
$rk = array_rand($nrs);
$nr = $nrs[$rk];
echo $nr; // 4556
• If you want to pick more than one random key from array, add a seccond argument that specifies the number of keys (less than the number of elements of that array). In this case,
array_rand($array, $nrk) will return an array with $nrs number of random keys from $array.
$nrs = array(123, 567, 4556, 34425, 78, 789);
$rks = array_rand($nrs, 2); // contains 2 random keys (2, 5)
echo $nrs[$rks[0]]; // 4556
echo $nrs[$rks[1]]; // 789
Random number with distinct digits
If you want to get a random number between a minimum and maximum number, but
with distinct digits, without repeated character in the random number, you can use the following function.
<?php
// returns a random number between $min and $max, with distinct digits
function getDistinctNr($min, $max) {
// random number with distinct digits ( https://coursesweb.net )
$nrstr = (string) mt_rand($min, $max); // get random number, converted into string
$n_nr = strlen($nrstr); // number of characters
$setnr = array(); // to store distinct digits that will form the returned number
// traverse the characters of $nrstr to add in $setnr only 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;
?>