Maison > développement back-end > Problème PHP > Comment utiliser Rand en PHP pour générer des nombres aléatoires non répétitifs

Comment utiliser Rand en PHP pour générer des nombres aléatoires non répétitifs

coldplay.xixi
Libérer: 2023-03-06 13:54:01
original
3155 Les gens l'ont consulté

Comment PHP utilise rand pour générer des nombres aléatoires non répétitifs : attribuez d'abord une valeur à chaque nombre du tableau dans l'ordre de son indice, puis commencez à prendre des nombres aléatoires dans la plage [i, $num-1] ; [$ rand], et utilisez le nombre aléatoire obtenu [$rand] comme position actuelle dans le tableau ; enfin, effectuez des opérations alternées sur les paires clé-valeur inchangées.

Comment utiliser Rand en PHP pour générer des nombres aléatoires non répétitifs

PHP utilise rand pour générer des nombres aléatoires non répétitifs :

/*
* array unique_rand( int $min, int $max, int $num )
* 生成一定数量的不重复随机数
* $min 和 $max: 指定随机数的范围
* $num: 指定生成数量
*/
function unique_rand($min, $max, $num) {
//初始化变量为0
$count = 0;
//建一个新数组
$return = array();
while ($count < $num) {
//在一定范围内随机生成一个数放入数组中
$return[] = mt_rand($min, $max);
//去除数组中的重复值用了“翻翻法”,就是用array_flip()把数组的key和value交换两次。这种做法比用 array_unique() 快得多。
$return = array_flip(array_flip($return));
//将数组的数量存入变量count中
$count = count($return);
}
//为数组赋予新的键名
shuffle($return);
return $return;
}
Copier après la connexion

Cette méthode obtient un nombre aléatoire à chaque fois Stockez-le dans un tableau puis supprimez les doublons... c'est inefficace... Je ne veux pas utiliser

PHP pour générer efficacement m nombres aléatoires uniques dans la plage n (m<=n)

function rand_num($num=&#39;200&#39;){
for($i=0;$i<$num;$i++){
$n[$i] = $i;
}
for($i=0;$i<$num;$i++){
$rand = mt_rand($i,$num-1);
//数组  随机数交换下标
if($n[$i] == $i){
$n[$i] = $n[$rand];
$n[$rand] = $i;
}
}
}
Copier après la connexion

1. La première étape consiste à attribuer une valeur à chaque nombre du tableau dans l'ordre de son indice pour obtenir un tableau de valeurs de clés numériques $num disposées dans l'ordre correspondant.

2. Dans la deuxième étape, commencez à obtenir le nombre aléatoire $rand dans la plage [i, $num-1] et utilisez le nombre aléatoire obtenu $rand comme indice correspondant à la clé de position actuelle i dans le tableau Value $rand, remplacez la valeur correspondant à l'indice de la clé $rand dans le tableau par i. Il s'agit en fait d'un échange croisé de valeurs de clé de tableau. Le sens est d'exclure le nombre aléatoire généré de la plage de valeurs [i,$num-1], et la prochaine fois, il prendra la valeur des nombres restants [i+1,num-1].

3. La troisième étape, afin d'éviter les valeurs répétées, effectuez uniquement des opérations alternées sur les paires clé-valeur inchangées, c'est-à-dire effectuez des opérations alternées sur les positions de la séquence de tableau d'origine (clé == valeur ).

4. Fin.

Comment utiliser Rand en PHP pour générer des nombres aléatoires non répétitifs

Recommandations d'apprentissage gratuites associées : programmation php(vidéo)

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