How To Fix PHP Random Being The Same

Having spent some time dealing with random numbers in C#, i was a little stumped when coming to php when I found myself having random numbers coming out the same. I know from dealing with this before that it is caused by the server being so fast that the seed doesnt have time to change. Holding onto the random context in C# is how to work around this but with PHP, random is not part of an object that you can instantiate. So how do you deal with PHP rand producing the same numbers while in a loop. For example.

foreach($words as $word)
{
    if(mt_rand(0,1) == 1)
    {
        //do this
    }
    else
    {
        //do that
    }
}

Using mt_rand was the first suggestion, but since I was already using PHP7 I was made aware that the old rand methods are now just aliases for these new random functions. Either way, it didnt fix the problem. The solution was to come up with some kind of seed that would be unique for my problem that I could feed into the library to ensure that PHP would come up with a random value each time.

I have come up with a rather simple seed method that will ensure that you will get a completely random value, every time by simply having a piece of text to produce a random seed.  This method will take the string and convert the letters to their ASCII value (or something like that) to produce a random number. All of these random numbers are combined into a string to produce a completely random number. This allowed me to reset the random seed for each loop I was doing and ensured that each word I was dealing with, had a proper random number generated to go along with it.

function SetRandomSeed($string)
{
    for($i = 0; $i < strlen($string); $i++) 
    {
        $result .= ord($string[$i]);
    }
    mt_srand($result . time());
}

 

Related Articles

Related Questions

Help Me Choose Between the 7800X3D and 9800X3D CPUs

I'm in the market for a new CPU and can't decide between the 7800X3D and the 9800X3D. Both have similar MSRP, but right now...

Just built my new PC, but it won’t turn on at all—help needed!

I just assembled my new PC a few hours ago, but when I plug it in, nothing happens. No fans are spinning, and there's...

Tips for Streamlining Employee Onboarding in IT

I'm on the hunt for effective ways to improve our employee onboarding process, particularly in the IT department. With our fast growth, we're often...

LEAVE A REPLY

Please enter your comment!
Please enter your name here

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Latest Tools

Add Custom Speech and Caption Boxes to Any Image Online

Creating comic-style images used to require complex design tools or specialist software. Whether you're making memes, teaching graphics, social media posts or lighthearted content,...

Free Pixel Art Upscaler Tool for Retro Game Assets

Pixel art holds a special place in design, especially in retro gaming, indie game development, and stylized icons. However, resizing or enlarging pixel art...

Interactive Wheel Spinner Tool – Add Choices and Randomly Pick a Winner

Making decisions doesn’t always have to be hard, sometimes it should be fun! Whether you're planning a classroom game, need a random picker for...

Online Hash Generator – String to Hash Converter

Need to quickly generate a hash from a string? Whether you're verifying file integrity, securing data, or just experimenting with cryptographic tools, this simple...

Convert CSV To HTML Table

Need to quickly turn CSV data into an HTML table? Whether you're copying data from Excel, Google Sheets, or another spreadsheet, this tool makes...

Student Group Randomizer

Creating fair and balanced groups in the classroom can be time-consuming — especially when you're trying to avoid repetition, manage different skill levels, or...

Latest Posts

Latest Questions