![]() |
[undefined] string aleatoire - Version imprimable +- N-PN White-Hat Project (https://dev.n-pn.fr/forum) +-- Forum : Programmation (https://dev.n-pn.fr/forum/forumdisplay.php?fid=72) +--- Forum : Langages interprétés (https://dev.n-pn.fr/forum/forumdisplay.php?fid=27) +--- Sujet : [undefined] string aleatoire (/showthread.php?tid=2435) |
[undefined] string aleatoire - InstinctHack - 23-11-2012 Pas de language défini ... Tinyurl, youtube, n-pn utilise des liens avec un id aleatoire de x caractere dans un alphabet de y longueur. pour le generer pas de probleme, en revanche si x vaut 26 et x == 1, l'evantaille de possibilité diminue rapidement avec l'insertion de donnée... Donc mon problème est : Comment obtenir un id aleatoire et n'etant pas deja utiliser... Pour le moment, c'est while(true) { $a=genere-id(); If(is-disponible($a)) {Return;} } Sauf que ce système tourne de plus en plus avec le remplissage de la bdd, donc comment faire ? RE: [undefined] string aleatoire - Dobry - 23-11-2012 Je pense que tu veux dire si "y vaut 26 et x==1" non ? (sinon ca n'a pas beaucoup de sens) Je n'ai pas bien compris pourquoi tu voulais limiter X à 1. RE: [undefined] string aleatoire - Kiwazaru - 23-11-2012 Bah tu peu pas faire une vérification dans la BDD pour voir si l'id est déjà utilisé et faire une condition: Si deja_utilise alors on regenère et ainsi de suite jusqu'a temps qu'il ne soit pas utilisé? RE: [undefined] string aleatoire - InstinctHack - 23-11-2012 La limitation de x est pour bien montrer le problème rencontrer, sinon il pourrait etre augmenter, mais le problème reste le meme quand la bdd se remplis.. @hat c'est deja le systeme en place. Sinon j'ai penser a generer un fichier contenant toutes les possibilités et supprimer ceux que j'utilise au fur et a mesure, mais ça risque de faire un gros fichier :/ RE: [undefined] string aleatoire - Dobry - 23-11-2012 Tu auras y^x différents choix, c'est facile à calculer xD Donc imagines une fonction qui génère 32 charactères, alphanumériques (36) y = 36^32 = 6.334028666×10⁴⁹ ID possibles, ce qui fait pas mal... RE: [undefined] string aleatoire - ark - 23-11-2012 (23-11-2012, 17h52)khaled a écrit : Sinon j'ai penser a generer un fichier contenant toutes les possibilités et supprimer ceux que j'utilise au fur et a mesure, mais ça risque de faire un gros fichier :/ Ça va mettre longtemps a le générer aussi... Sinon, pourquoi ne pas te baser sur une fonction mathématique dont tu est sur que le résultat ne seras jamais deux fois le même ? (idée a la con, mais ça peut marcher.) RE: [undefined] string aleatoire - EpicOut - 01-12-2012 Ouais tu fais ton propre algo de génération d'ID's, comme ça au moins tu es pépère. RE: [undefined] string aleatoire - b0fh - 01-12-2012 Hello, Inutile de vérifier que tes IDs sont déja utilisés. Il suffit de les prendre assez longs, et d'avoir une source random de bonne qualité. Si tu génères des IDs aléatoires longs de b bits, la probabilité d'une collision devient significative quand la taille de la DB atteint environ 2^(b/2). Tu peux googler "paradoxe des anniversaires" pour des indications plus précises sur le calcul de la probabilité d'une collision. Mais pour donner un ordre de grandeur, avec un ID aléatoire de 64 bits (soit 8 bytes, ou 16 caractères hexadécimaux) et une BDD de 200k entrées, tu as encore plus de chances de gagner le jackpot a l'euromillions (~10^-8) que d'observer une collision (10^-9). Avec un ID de 128 bits, il faut une BDD de 10^14 entrées pour atteindre une probabilité équivalente. RE: [undefined] string aleatoire - InstinctHack - 01-12-2012 Bofh, je sais bien que la probabilité est infime quand la longueur est suffisante, mais justement je me posais la question quand ce n'est pas le cas ^^ mais merci de tes précisions ![]() |