wp_rand( int $min = null, int $max = null ): int
- Since
- 2.6.2, 4.4.0, 6.1.0
- Source
wp-includes/pluggable.php:3009
Generates a random non-negative number.
Parameters
$minintoptional- Lower limit for the generated number. Accepts positive integers or zero. Defaults to 0.Default:
null $maxintoptional- Upper limit for the generated number. Accepts positive integers. Defaults to 4294967295.Default:
null
Return
int- A random non-negative number between min and max.
Uses · 3
- absint()Converts a value to non-negative integer.
- get_transient()Retrieves the value of a transient.
- set_transient()Sets/updates the value of a transient.
Used by · 8
- get_the_password_form()Retrieves protected post password form content.
- print_embed_sharing_dialog()Prints the necessary markup for the embed sharing dialog.
- send_confirmation_on_profile_email()Sends a confirmation request email when a change of user email address is attempted.
- twenty_twenty_one_password_form()Retrieves protected post password form content.
- update_option_new_admin_email()Sends a confirmation request email when a change of site admin email address is attempted.
- wp_generate_password()Generates a random password drawn from the defined set of characters.
- wpmu_signup_blog()Records site signup information for future activation.
- wpmu_signup_user()Records user signup information for future activation.
Source
function wp_rand( $min = null, $max = null ) { global $rnd_value; /* * Some misconfigured 32-bit environments (Entropy PHP, for example) * truncate integers larger than PHP_INT_MAX to PHP_INT_MAX rather than overflowing them to floats. */ $max_random_number = 3000000000 === 2147483647 ? (float) '4294967295' : 4294967295; // 4294967295 = 0xffffffff if ( null === $min ) { $min = 0; } if ( null === $max ) { $max = $max_random_number; } // We only handle ints, floats are truncated to their integer value. $min = (int) $min; $max = (int) $max; // Use PHP's CSPRNG, or a compatible method. static $use_random_int_functionality = true; if ( $use_random_int_functionality ) { try { // wp_rand() can accept arguments in either order, PHP cannot. $_max = max( $min, $max ); $_min = min( $min, $max ); $val = random_int( $_min, $_max ); if ( false !== $val ) { return absint( $val ); } else { $use_random_int_functionality = false; } } catch ( Error $e ) { $use_random_int_functionality = false; } catch ( Exception $e ) { $use_random_int_functionality = false; } } /* * Reset $rnd_value after 14 uses. * 32 (md5) + 40 (sha1) + 40 (sha1) / 8 = 14 random numbers from $rnd_value. */ if ( strlen( $rnd_value ) < 8 ) { if ( defined( 'WP_SETUP_CONFIG' ) ) { static $seed = ''; } else { $seed = get_transient( 'random_seed' ); } $rnd_value = md5( uniqid( microtime() . mt_rand(), true ) . $seed ); $rnd_value .= sha1( $rnd_value ); $rnd_value .= sha1( $rnd_value . $seed ); $seed = md5( $seed . $rnd_value ); if ( ! defined( 'WP_SETUP_CONFIG' ) && ! defined( 'WP_INSTALLING' ) ) { set_transient( 'random_seed', $seed ); } } // Take the first 8 digits for our value. $value = substr( $rnd_value, 0, 8 ); // Strip the first eight, leaving the remainder for the next call to wp_rand(). $rnd_value = substr( $rnd_value, 8 ); $value = abs( hexdec( $value ) ); // Reduce the value to be within the min - max range. $value = $min + ( $max - $min + 1 ) * $value / ( $max_random_number + 1 ); return abs( (int) $value ); }History
Introduced in 2.6.2. Unchanged from 6.7.7 through 7.1.0.
Signature, return type and hooks compared across 5 parsed releases.
6.1.0
Returns zero instead of a random number if both
$min and $max are zero.from the docblock4.4.0
Uses PHP7 random_int() or the random_compat library if available.from the docblock
2.6.2
Introduced.from the docblock
About this page
- Parsed data
- Generated from the wordpress-develop 7.1.0 tag, from
src/wp-includes/pluggable.php, and regenerated for each WordPress release so it tracks the code rather than a snapshot of it. - Corrections
- Something wrong on this page? Report it and it gets fixed in the next regeneration.