Génération automatique d'un Matricule

Messages postés
2
Date d'inscription
samedi 31 août 2019
Statut
Membre
Dernière intervention
1 septembre 2019
- - Dernière réponse : Whismeril
Messages postés
13734
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
19 septembre 2019
- 1 sept. 2019 à 10:19
Bonjour!
Je travaille sur un projet personnel dont le langage de progammation que j'utilise est wlangage (j'utilise Windev 20).
J'aimerais génerer un Matricule fait d'une combinaison de lettre et chiffres de façon aléatoire et automatique.
Je suis blocqué et je sollicite de l'aide. Merci à vous
Afficher la suite 

2 réponses

Meilleure réponse
Messages postés
13734
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
19 septembre 2019
302
1
Merci
Bonjour

A ma connaissance, parmi les membres actifs réguliers, il n'y a pas de codeurs Windev.
Donc l'aide qui pourrait t'être apportée se limiterait à du pseudo code.

Cependant, il va te falloir être un peu plus précis sur ta demande, car avec le peu d'éléments que tu as donné, la seule réponse que l'on peut te faire pour l'instant est:
Génère aléatoirement une lettre ou un chiffre et concatène le avec les caractères précédents, et ce jusqu'à avoir assez de caractères.

Si tu veux mieux, il va falloir nous dire quelle est la partie de cet algorithme qui te pose problème, préciser
  • s'il y a un formalisme, par exemple, 5 lettres, 3 chiffres et 3 lettres,
  • s'il y a des chiffres ou des lettres interdits, par exemple pas de 0 ni de O (voire de Q) pour limiter les confusions
  • s'il y a des majuscules et des minuscules ou seulement l'un des 2



Par contre, je peux attirer ton attention, sur un point potentiellement bloquant.
Qui dit matricule, dit unique. Que ce matricule soit destiné à des personnes, des animaux ou des objets, un même numéro ne doit pas être attribué 2 fois, même si la première attribution ne semble plus utile (personne ayant quitté "l'environnement", animal décédé, objet détruit, etc...) pour des raisons d'historique, le matricule ne peut pas être réutilisé.
Le fait de générer de façon continue le numéro de matricule, ne pose aucun soucis, avec l'unicité, c'est la raison pour laquelle, les matricules définit avant l'aire informatique suivent une logique de progression (immatriculation de véhicule, numéro de sécurité sociale, etc...)

Par contre, en cas de génération aléatoire, il faut vérifier cette unicité.
L'algorithme auquel on pense de suite est:

Faire
Générer un matricule
Chercher dans les matricules existants, si ce numéro est déjà attribué
Tant le matricule existe déjà

Cet algorithme fonctionne très bien, si le format du matricule permet un nombre de combinaison très supérieur à la population attendue.
Par exemple, si le matricule fait 6 caractères (1 million de combinaisons) et que la population maximum est de 1000 trucs, il y a peu de chance de générer un matricule existant, et si c'est le cas, aussi peu de chance que le 2eme essai existe et aussi peu de chance que le 3eme existe, etc...
A l'inverse si ton matricule fait 3 caractères (1000 combinaisons), quand tu auras atteint 900 trucs, tu auras 9 chances sur 10 que le numéro généré existe, et 9 chances sur 10 que le 2eme essai existe etc... Ça peut durer un moment, et quand tu auras atteint 990 trucs ça peut tourner en boucle sans jamais s'arrêter.
Si la population possible dépasse la moitié des combinaisons, alors je te déconseille d'utiliser cet algorithme. Il est bien plus efficace
  • de générer par avance toutes les combinaisons possible de façon progressive,
  • de stocker toutes ces combinaisons dans la base de données,
  • au besoin d'en piocher une aléatoirement et de l'enlever des combinaisons disponibles

La génération initiale pourra durer un certain temps, mais peu importe, il te suffit de le faire avant de livrer le logiciel au client, et ensuite quand il aura besoin d'un matricule, cela prendra quelques millisecondes, alors que par vérification, cela peut durer plusieurs minutes et tu auras un client pas content du tout.

Dire « Merci » 1

Heureux de vous avoir aidé ! Vous nous appréciez ? Donnez votre avis sur nous ! Evaluez CodeS-SourceS

Codes Sources 136 internautes nous ont dit merci ce mois-ci

ClavierVirtuel
Messages postés
2
Date d'inscription
samedi 31 août 2019
Statut
Membre
Dernière intervention
1 septembre 2019
-
Salut Merci pour ta proposition!
En réalité je veux coder un Logiciel de paie et j'ai des salaries
Que je veux inserer (1000 salaries par exemple)
Je veux que lors de l'inscription, je puisse les donner des Matricule automatiquement
Commenter la réponse de Whismeril
Messages postés
13734
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
19 septembre 2019
302
1
Merci
Bonjour
Merci pour ta proposition! De rien, surtout que je ne t’ai rien proposé de particulier.

Par contre, je t’ai demandé un certain nombre de précisions auxquelles tu n’as pas répondu.

Dire « Merci » 1

Heureux de vous avoir aidé ! Vous nous appréciez ? Donnez votre avis sur nous ! Evaluez CodeS-SourceS

Codes Sources 136 internautes nous ont dit merci ce mois-ci

Commenter la réponse de Whismeril