RandRange

Description

Generates a pseudo-random integer in the range between two specified numbers.

Returns

A pseudo-random integer.

Function syntax

RandRange(number1, number2[, algorithm])

History

ColdFusion MX 7: Added the algorithm parameter.

See also

Rand, Randomize

Parameters

Parameter

Description

number1, number2

Integer numbers. If the numbers are not in the range -2,147,483,648 – 2,147,483,647, ColdFusion generates an error.

algorithm

(Optional) The algorithm to use to generate the random number. ColdFusion installs a cryptography library with the following algorithms:

  • CFMX_COMPAT: the algorithm used in ColdFusion (default).

  • SHA1PRNG: generates a number using the Sun Java SHA1PRNG algorithm. This algorithm provides greater randomness than the default algorithm

  • IBMSecureRandom: for IBM WebSphere (IBM JVM does not support the SHA1PRNG algorithm.)

Usage

Very large positive or negative values for the number1 and number2 parameters might result in poor randomness in the results. To prevent this problem, do not specify numbers outside the range -1,000,000,000 – 1,000,000,000.

ColdFusion uses the Java Cryptography Extension (JCE) and installs a Sun Java 1.4.2 runtime that includes the Sun JCE default security provider. This provider includes the algorithms listed in the Parameters section (except the default algorithm). The JCE framework includes facilities for using other provider implementations; however, cannot provide technical support for third-party security providers.

Example

The following example contains a form that requires random number range values, and lets you optionally specify a random number seed value. It uses cfform controls and attributes to specify a default range, ensure that the range fields have values, and validate that the field values are in a specified integer range. When you submit the form, it checks whether the seed field has an empty string; if the field has a value, the code uses the number to seed the random number generator. It then generates and displays the random number.

<h3>RandRange Example</h3> 
 
<!--- Do the following only if the form has been submitted. ---> 
<cfif IsDefined("Form.mySeed")> 
 
    <!--- Do the following only if the seed field has a non-empty string. ---> 
    <cfif Form.mySeed NEQ ""> 
        <cfoutput> 
            <b>Seed value is #FORM.mySeed#</b><br> 
        </cfoutput> 
        <br> 
 
        <!--- Call Randomize to seed the random number generator. ---> 
        <cfset r = Randomize(FORM.mySeed, "SHA1PRNG")> 
    <cfelse> 
        <b>No Seed value submitted</b><br> 
    </cfif> 
 
    <!--- Generate and display the random number. ---> 
    <cfoutput><p><b> 
        RandRange returned: #RandRange(FORM.myInt, FORM.myInt2, "SHA1PRNG")# 
    </cfoutput></b></p> 
</cfif> 
 
<!--- This form uses cfform input validation to check the input range. ---> 
<cfform action = "#CGI.SCRIPT_NAME#"> 
<p>Enter the random number Range: From  
<cfinput type = "Text" name = "MyInt" value = "1"  
    RANGE = "-1000000000,1000000000" 
    message = "Please enter a value between -1,000,000,000 and 1,000,000,000" 
    validate = "integer" required = "Yes"> 
To  
<cfinput type = "Text" name = "MyInt2" value = "9999"  
    RANGE = "-1000000000,1000000000" 
    message = "Please enter a value between --1,000,000,000and 1,000,000,000" 
    validate = "integer" required = "Yes"></p> 
<p>Enter a number to seed the randomizer:  
<cfinput type = "Text" name = "mySeed" RANGE = "-1000000000,1000000000" 
    message = "Please enter a value between -1,000,000,000 and 1,000,000,000" 
    validate = "integer" required = "No"></p> 
<p><input type = "Submit" name = ""> 
</cfform>