Maison  >  Article  >  développement back-end  >  Les nombres aléatoires générés lorsque les données PHP sont automatiquement incrémentées ne sont pas répétés.

Les nombres aléatoires générés lorsque les données PHP sont automatiquement incrémentées ne sont pas répétés.

巴扎黑
巴扎黑original
2017-08-22 17:47:311703parcourir

Cet article présente principalement comment utiliser PHP pour générer des nombres aléatoires non répétitifs basés sur des données d'incrémentation automatique. L'article fournit un exemple de code détaillé pour votre référence et votre étude. Il a une certaine valeur de référence pour tous les amis qui en ont besoin. jetez un œil ensemble ci-dessous.

Cet article présente principalement le contenu pertinent de PHP pour générer des nombres aléatoires non répétitifs basés sur des données auto-incrémentées. Il est partagé pour la référence et l'apprentissage de chacun. Il est inutile d'en dire plus ci-dessous et d'aller directement au. code :

La clé Le fait est que le contrôle du nombre de chiffres des données auto-croissantes générées

se trouve à deux endroits

1. Si le tableau de base $base est un tableau de 8 bits, il doit comporter 8 chiffres

2. $i est un nombre auto-incrémenté. ne peut pas dépasser 8 chiffres

Le résultat de l'analyse simple actuelle est le ci-dessus. Si vous souhaitez une non-duplication globale, il est recommandé d'utiliser uuid ou similaire.

Exemple de code :


function swap($n,$base) {
$mask = 19; //1 + 2 + 16
 $n = intval($n, 10);
 $idx = $n & $mask;//取出标志位
 $xor = $base[$idx] ^ $n;//根据标识为找到对应的base,异或n
 
 return (($xor | $mask) ^ $mask) | $idx;//覆盖标识位
}
$newArray=[];
$base = array (
 0 => 1918407,
 1 => 5529570,
 2 => 6527234,
 3 => 6550962,
 4 => 8054672,
 5 => 3141234,
 6 => 2125630,
 7 => 6978033,
 8 => 4623630,
 9 => 4736420,
 10 => 7767295,
 11 => 9679880,
 12 => 1665600,
 13 => 6044373,
 14 => 4661383,
 15 => 5771843,
 16 => 2206123,
 17 => 5685396,
 18 => 5571647,
 19 => 7178311,
);
for ($i=0;$i<1000000;$i++) {
 $newArray[]= swap($i,$base)."\r\n";
}

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