Maison  >  Article  >  développement back-end  >  Résumé des méthodes pour générer des nombres aléatoires à l'aide des fonctions intégrées de PHP

Résumé des méthodes pour générer des nombres aléatoires à l'aide des fonctions intégrées de PHP

藏色散人
藏色散人avant
2019-01-17 16:43:194921parcourir


La méthode de génération de nombres aléatoires en interne dans PHP est plus simple que les autres méthodes et ne nécessite pas de configuration supplémentaire. C'est la solution privilégiée pour générer des nombres aléatoires.

Résumé des méthodes pour générer des nombres aléatoires à l'aide des fonctions intégrées de PHP

1. Fonction rand

La fonction rand() peut générer des entiers aléatoires sans ajouter de paramètres. Si vous souhaitez définir la plage de nombres aléatoires, vous pouvez définir les valeurs min et max dans la fonction. Si vous devez générer une graine de nombre aléatoire, utilisez la configuration de la fonction srand.

echo rand();                      // 生成 0~RAND_MAX 之间的随机数,Windows 系统下 RAND_MAX 的值为 32767,RAND_MAX 可以用函数 getrandmax() 获得
echo rand(1000000, 9999999);      // 生成 1000000~9999999 之间的随机数
$seed = time();                   // 使用时间作为种子源
srand($seed);                     // 播下随机数发生器种子
echo rand();                      // 根据种子生成 0~32768 之间的随机数。如果 $seed 值固定,则生成的随机数也不变
echo rand(1000000, 9999999);      // 根据种子生成 1000000~9999999 之间的随机数。如果 $seed 值固定,则生成的随机数也不变

2. La fonction mt_rand

mt_rand() utilise l'algorithme Mersenne Twister pour renvoyer des entiers aléatoires. La principale différence avec la fonction rand() est : mt_rand. () La vitesse moyenne de génération de valeurs aléatoires est quatre fois plus rapide que le rand() fourni par la libc, et la fonction d'amorçage utilise mt_srand() au lieu de srand(). Bien qu'il y ait cette différence, leurs méthodes d'utilisation sont toujours similaires, comme suit :

echo mt_rand();                   // 生成 0~RAND_MAX 之间的随机数,Windows 系统下 RAND_MAX 的值为 2147483647(与rand()中的 RAND_MAX 不同),RAND_MAX 可以用函数 mt_getrandmax() 获得
echo mt_rand(1000000, 9999999);   // 生成 1000000~9999999 之间的随机数,不受系统 RAND_MAX 影响
$seed = time();                   // 使用时间作为种子源
mt_srand($seed);                  // 播下随机数发生器种子
echo rand();                      // 根据种子生成 0~RAND_MAX 之间的随机数,如果 $seed 值固定,则生成的随机数也不变
echo rand(1000000, 9999999);      // 根据种子生成 1000000~9999999 之间的随机数,如果 $seed 值固定,则生成的随机数也不变

Remarque : Les nombres aléatoires générés par rand() et mt_rand() sont tous des entiers et ne contiendront pas de lettre anglaise.

3. Fonction uniqid

La fonction uniqid() génère un identifiant unique basé sur l'heure actuelle en microsecondes. La longueur de l'ID généré par défaut est de 13 ou 23 chiffres, composés de lettres et de chiffres anglais. La fonction uniqid() a deux paramètres, au format suivant :

uniqid(prefix,more_entropy)

où,

prefix : le préfixe pour générer les identifiants

more_entropy : s'il faut ajouter des entropie

Le programme suivant,

echo uniqid();                    // 生成13位字符串,如:55f540e273e93
echo uniqid('one.');              // 生成前缀为one.加13位随机字符的字符串,如:one.55f540e273e93
echo uniqid('two.', true);        // 生成前缀为two.加23位随机字符的字符串(加了熵),如:two.55f540e273e932.77804707,比上面的多了 10 位,即多了:2.77804707

Explication : Parce qu'il est basé sur l'heure système, l'ID généré par cette fonction n'est pas optimal. Pour générer un identifiant absolument unique, utilisez la fonction md5().


Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer