PHP génère 10 nombres aléatoires non répétitifs

王林
Libérer: 2023-02-25 17:42:01
original
7495 Les gens l'ont consulté

PHP génère 10 nombres aléatoires non répétitifs

Question :

Il y a 25 œuvres pour voter Vous devez sélectionner 16 œuvres en un seul vote. Une seule œuvre ne peut être sélectionnée. une fois 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 ?

Il est nécessaire de 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.

Le programme est le suivant :

<?php
/*
* array unique_rand( int $min, int $max, int $num )
* 生成一定数量的不重复随机数
* $min 和 $max: 指定随机数的范围
* $num: 指定生成数量
*/
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;
?>
Copier après la connexion

Les résultats en cours d'exécution sont les suivants :

2,3,4,6,7,8,9,10,11,12,13,16,20,21,22,24
Copier après la connexion

Instructions supplémentaires :

1. 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().

2. Lors de la suppression des valeurs en double du tableau, la "méthode flip" est utilisée, qui consiste à utiliser la fonction array_flip() pour échanger deux fois la clé et la valeur du tableau. Cette approche est beaucoup plus rapide que l’utilisation de la fonction array_unique().
3. Avant de renvoyer le tableau, utilisez d'abord shuffle() pour attribuer un nouveau nom de clé au tableau, en vous assurant que le nom de clé est un nombre consécutif de 0 à n. Si cette étape n'est pas effectuée, les noms de clés peuvent être discontinus lors de la suppression des valeurs en double, provoquant des problèmes de parcours.

Tutoriel recommandé : Tutoriel vidéo PHP

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal