Ever wondered how to generate random numbers in PHP using a simple function while excluding some numbers you don't want, just like a friend of mine that requested for this code?
Here's how to do it:
<?php
function generateRandomNumber($min, $max, $excludedNumbersArr) {
do {
$number = rand($min, $max);
} while (in_array($number, $excludedNumbersArr));
return $number;
}
// Use it this way
echo generateRandomNumber(50,250,[123,145]); //This PHP function generates a number between 50 and 250, excluding 123 and 145.
?>
Explanation:
-
Set the Range: The function defines the minimum (
$min
) and maximum ($max
) values for the random number. -
Excluded Numbers: An array
$excludedNumbersArr
contains the numbers you want to exclude. -
Generate Random Number: A
do-while
loop generates a random number usingrand($min, $max)
. It continues to generate a new number until the number is not in the$excludedNumbersArr
array. -
in_array(): This is a PHP function that checks if a value exists in an array. It takes two parameters:
Value: The value you want to search for.
Array: The array in which you want to search for the value. Return the Number: Once a valid number is generated, it is returned.
This function ensures that the generated number is within the specified range and does not include the excluded values.
Thanks for reading this article.
I write codes on demand. Let me know the code you need, and I will help you write them in your programming language.
PS:
I love coffee, and writing these articles takes a lot of it! If you enjoy my content and would like to support my work, you can buy me a cup of coffee. Your support helps me to keep writing great content and stay energized. Thank you for your kindness!
Buy Me A Coffee.
Top comments (2)
That's a nifty function, but please be aware that these random strings are not cryptographically safe and should therefore not be used for encryption.
Thanks for your feedback, Drazen.
It's important to note that this function is not meant for encryption purposes. It's just a basic function for generating random codes within a certain range of numbers while ignoring any number within a given array.
There are more cryptographically safe approaches to generate random numbers for encryption purposes, and this is not one of them.
For encryption purposes, one can use the functions introduced in PHP 7 and above, like
random_int()
orrandom_bytes()
(with some tweaks), or even the legendaryopenssl_random_pseudo_bytes()
(for older versions of PHP).Maybe I'll update the post for clarity.
Thanks again.