wp_rand() WP 2.6.2

Генерує випадкове число між зазначеними min та max.

C версії 4.4.0 використовує PHP7 random_int() якщо доступна; чи внутрішній алгоритм.

Це init .

Заміна функції (перевизначення) — у плагіні можна створити функцію з такою самою назвою, тоді вона замінить поточну функцію.

Основа для:
wp_generate_password()
1 раз – 0.000032 сек
(дуже швидко) | 50000 разів – 0.09 сек
(швидкість світла) |
PHP 7.0.8, WP 4.6.1

Хуків немає.

Повертає

int. Створене число.

Використання

wp_rand ($ min, $ max);
$min
(число)
Мінімальна кількість можлива.


За замовчуванням: 0
$max
(число)
Максимальне можливе число.


За замовчуванням: 0

Приклади

0

#1 Отримаємо випадкове число

Демонстрація роботи функції:

echo wp_rand (99, 99999); // 19899, ​​85724, 77130, 51575
echo wp_rand(1.5, 5.5); // 5, 1, 3, 4
echo wp_rand(5, 4); // Завжди 5

нотатки

  • Global. Рядок. $rnd_value

список змін

З версії 2.6.2Введено.
З версії 4.4.0Uses PHP7 random_int() or the random_compat library if available.

Код wp_rand() WP 6.0.2

function wp_rand( $min = 0, $max = 0 ) {
	global $rnd_value;

	// деякі configured 32-бітові середовища (Entropy PHP, for example)
	// truncate integers larger than PHP_INT_MAX to PHP_INT_MAX решта than overflowing them to floats.
	$max_random_number = 3000000000 === 2147483647 ? (float) '4294967295': 4294967295; // 4294967295 = 0xffffffff

	// We тільки handle ints, floats є truncated до їх integer value.
	$ min = (int) $ min;
	$max = (int) $max;

	// Use PHP's CSPRNG, або compatible method.
	static $use_random_int_functionality = true;
	if ( $use_random_int_functionality ) {
		try {
			$_max = (0! = $max)? $max: $max_random_number;
			// wp_rand() може бути прийнятий arguments в either order, PHP неможна.
			$_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);
		}
	}

	// Такі перші 8 digits for our value.
	$ value = substr ($ rnd_value, 0, 8);

	// Strip the first eight, leaving the remainder для 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.
	if ( 0 != $max ) {
		$value = $min + ($max - $min + 1) * $value / ($max_random_number + 1);
	}

	return abs ((int) $ value);
}

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *