Maison  >  Article  >  développement back-end  >  Explication détaillée des étapes pour générer une chaîne aléatoire de longueur personnalisée en PHP

Explication détaillée des étapes pour générer une chaîne aléatoire de longueur personnalisée en PHP

php中世界最好的语言
php中世界最好的语言original
2018-05-21 11:31:271733parcourir

Cette fois, je vais vous donner une explication détaillée des étapes pour générer une chaîne aléatoire de longueur personnalisée en PHP. Quelles sont les précautions pour générer une chaîne aléatoire de longueur personnalisée en PHP. ? Voici les cas pratiques, jetons un oeil.

//随机生成字符串
function random($length) {
     srand(date("s"));
     $possible_charactors = "0123456789abcdefghijklmnopqrstuvwxyz";
     $string = "";
     while(strlen($string)<$length) {
          $string .= substr($possible_charactors,(rand()%(strlen($possible_charactors))),1);
     }
     return($string);
}

Exemple 2, php génère n instances de nombres aléatoires non répétitives
Utilisez php pour générer n instances de nombres aléatoires non répétitives

Il y a 25 œuvres prises Pour voter, vous vous devez sélectionner 16 œuvres en un seul vote, et vous ne pouvez sélectionner qu'une seule œuvre en un seul vote.
Un programmeur a commis une erreur plus tôt et a oublié de stocker les votes dans la base de données. Les séquences de vote générées par 200 utilisateurs étaient vides. Alors, comment combler cette lacune ?
Vous devez générer 16 nombres aléatoires non répétitifs entre 1 et 25 pour remplir. Comment concevoir la fonction spécifiquement ? Stockez les nombres aléatoires dans un tableau, puis supprimez les valeurs en double dans le tableau pour générer un certain nombre de nombres aléatoires non répétitifs.
Programme :

<?php
/*
* array unique_rand( int $min, int $max, int $num )
* 生成一定数量的不重复随机数
* $min 和 $max: 指定随机数的范围
* $num: 指定生成数量
*/ www.jbxue.com
function unique_rand($min, $max, $num) {
    $count = 0;
    $return = array();
    while ($count < $num) {
        $return[] = mt_rand($min, $max);
        $return = array_flip(array_flip($return));
        $count = count($return);
    }
    shuffle($return);
    return $return;
}
$arr = unique_rand(1, 25, 16);
sort($arr);
$result = &#39;&#39;;
for($i=0; $i < count($arr);$i++)
{
 $result .= $arr[$i].&#39;,&#39;;
}
$result = substr($result, 0, -1);
echo $result;
?>

Programme en cours d'exécution :
2,3,4,6,7,8,9,10,11,12,13,16,20,21,22, 24

Supplément :
La fonction mt_rand() est utilisée pour générer des nombres aléatoires. Cette fonction génère des nombres aléatoires quatre fois plus rapidement en moyenne que rand().
Lors de la suppression des valeurs en double du tableau, la "méthode flip" est utilisée, qui consiste à utiliser array_flip() pour échanger deux fois la clé et la valeur du tableau. Cette approche est beaucoup plus rapide que l'utilisation de array_unique().
Avant de renvoyer le tableau, utilisez d'abord shuffle() pour attribuer de nouveaux noms de clés au tableau, en vous assurant que les noms de clés sont des nombres consécutifs de 0 à n. Si cette étape n'est pas effectuée, les noms de clés peuvent être discontinus lorsque supprime les valeurs en double, provoquant des problèmes de parcours.

Je pense que vous maîtrisez la méthode après avoir lu le cas dans cet article. Pour des informations plus intéressantes, veuillez prêter attention aux autres articles connexes sur le site Web chinois de php !

Lecture recommandée :

Explication détaillée des étapes pour l'exemple de classe de compression php ZIP

Explication détaillée des étapes pour déterminer PHP l'état d'exécution du programme

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:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn