# Robson ▸ Little Red Book ▸ Random Numbers #1

## Chapter 7 - Question 2

Construct a program that contains a function, with a single non-zero positive integer parameter not greater than the largest permitted integer, that computes and returns a random integer in the range 1 to the given value.

The main program should call and test the function with various values.

The function should use any available random number generator.

### Solution 1

PHP:

`<?` `    // returns a number between 1 and the parameter` `    function ic_random(\$highest)` `    {` `        // use the mt random function for improved randomness and reduced time` `        return mt_rand(1, \$highest);` `    }` `    ` `    // perform a random number of tests` `    for (\$n = 0; \$n < mt_rand(10, 20); \$n++)` `    {` `        // generate a random highest value` `        \$highest = mt_rand(1, 20);` `        // send the highest value to the random function` `        \$result = ic_random(\$highest);` `        // show the range and the result` `        echo 'Random number from 1 to ' . \$highest . ': ' . \$result;` `        // check if it matches the rules` `        if (\$result >= 1 && \$result <= \$highest)` `            // show the user this was a valid number` `            echo ' - <span style="color:green">True</span>';` `        else` `        {` `            // this number doesn't match the rule, show that to the user` `            echo ' - <span style="color:red">False</span>';` `            // increment failed counter` `            \$failed++;` `        }` `        echo '<br/>';` `    }` `    ` `    // check the number of failures` `    if (!\$failed)` `        echo '<br/><span style="color:green">All tests passed successfully!</span>';` `    else` `        echo '<br/><span style="color:red">Failed tests: ' . \$failed . '</span>';` `?>`

Which produces:

Random number from 1 to 20: 15 - True
Random number from 1 to 11: 8 - True
Random number from 1 to 9: 4 - True
Random number from 1 to 7: 1 - True
Random number from 1 to 16: 6 - True
Random number from 1 to 9: 3 - True
Random number from 1 to 6: 4 - True
Random number from 1 to 9: 1 - True
Random number from 1 to 3: 2 - True
Random number from 1 to 14: 7 - True
Random number from 1 to 13: 6 - True

All tests passed successfully!

## Log

• October 17, 2005 - Added solution 1.
© 2004-20 robson | cc unless stated