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

WordPress Table of Contents Plus Not Working

I have been using this plugin for a while and i really like it. It seems to have completely stopped working recently. I can...

Function Keys Reversing Between Fn Actions And Normal

My keyboard has the usual F1 to F12 keys along the top. I use these for shortcuts in various applications. These keys also have...

Whirlpool Oven F6E6: Appliance Manager 1 Board Communication

I have a brand new Whirlpool oven W11I OM1 4MS2 H or (859991549450). I bought it alongside the microwave combi oven. I have had...

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

List Sorting Tool

Welcome to our innovative list ordering and management tool. This next-level platform enables you to sort a list of items in ascending or descending...

Sudoku Solver

Welcome to our free online Sudoku solving tool, an interactive platform for puzzle enthusiasts seeking a break from a Sudoku conundrum. This advanced platform...

Apply Image Filters To Image

Digital imagery in the modern world is all about reinforcing emotions and stories behind each photo we take. To amplify this storytelling, we are...

Add Watermark To Image

As the world is increasingly consumed by digital media, protecting your original images is paramount. We are thrilled to introduce you to our innovative...

CSV To Xml Converter

Welcome to our CSV to XML converter tool, a convenient and user-friendly solution for all your data conversion needs. This versatile tool on our...

RGB Image Splitter

Welcome to our innovative RGB Splitter - a unique image analyzer tool that offers an in-depth peek into the building blocks of your photos....

Latest Posts

Latest Questions