GÉNÉRATEUR DE CLÉ TRILINGUE

vlad2i Messages postés 285 Date d'inscription mercredi 20 août 2003 Statut Membre Dernière intervention 13 février 2005 - 29 mai 2004 à 20:30
econs Messages postés 4030 Date d'inscription mardi 13 mai 2003 Statut Membre Dernière intervention 23 décembre 2008 - 5 janv. 2007 à 12:23
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/23246-generateur-de-cle-trilingue

econs Messages postés 4030 Date d'inscription mardi 13 mai 2003 Statut Membre Dernière intervention 23 décembre 2008 24
5 janv. 2007 à 12:23
Il n'est pas question ici d'être content ou pas. On veut juste indiquer à Sharkiller que son code est très très optimisable, et pointer du doigt les points qui fachent. Sinon, aucune chance pour lui de s'améliorer.

Par exemple :

===================================================================

# For n = 1 To 41
# Randomize
# nbrnd = Int((1 * Rnd) * n)
# Next n

Au passage, 1 * Rnd = Rnd

Les deux lignes qui suivent font la même chose, et tu obtiendras un vrai résultat aléatoire. Sans regénérer le compteur de Rnd, tu obtiendrais toujours les mêmes valeurs.

Randomize Timer ' réinitialisation du générateur de nombres aléatoires;
nbrnd = Int(41*Rnd)+1

Ce qui donnera 1 <= nbrnd < 42

Avec çà, aucun risque de sortir des bornes.



============================================================

# 'Si le nombre dépasse 41,
# 'On régénère ce nombre
# If nbrnd > 41 Then
# For n = 1 To 41
# Randomize
# nbrnd = Int((1 * Rnd) * n)
# Next n
# End If
# 'Si le nombre est inférieur à 41,
# 'On régénère ce nombre
# If nbrnd < 1 Then
# For n = 1 To 41
# Randomize
# nbrnd = Int((1 * Rnd) * n)
# Next n
# End If
Et si ici, après les 2 If, nbrnd > 41, tu fais quoi ? Le "If >41" est déjà passé ... Y'a comme un hic d'algo.

============================================================
Enfin, les boucles For ne servent à rien du tout. Remplaces 'n' directement par 41, tu gagneras du temps CPU et de la lisibilité.
speedyghost Messages postés 6 Date d'inscription mardi 4 juillet 2006 Statut Membre Dernière intervention 10 septembre 2006
5 janv. 2007 à 10:57
ben si vous etes pas content, allez voir ailleur !
sinon faites le vous meme !
vlad2i Messages postés 285 Date d'inscription mercredi 20 août 2003 Statut Membre Dernière intervention 13 février 2005
4 juin 2004 à 20:37
Rhooooô

Jamais !
Jamais un constructeur consciencieux (a part M$ peut etre) ne mettrait "en dur" les codes dans le programme !!!

SimonKari as raison : rien n'est aléatoire en informatique, au mieux tu aura de l'imprédictif...

Héhé non mais essayes toi à un générateur qui respecte une loi mathématique (Checksum 10, Somme des chiffres 25) et pis voila !
Sharkiller Messages postés 71 Date d'inscription dimanche 12 octobre 2003 Statut Membre Dernière intervention 9 janvier 2009
3 juin 2004 à 22:49
Et bien enfait, le but de ce petit prog était d'expliquer comment définir la clé à générer... bien sûr qu'il était possible de générer une clé aléatoire à chaque fois, mais je ne vois pas l'utilité... car un générateur de clé définit une clé précise pour le programme...

du moins, c'estc e que je pense...

c'est du basique, c'est que du texte, je le rappelle...

Merci et bonne prog
SimonKari Messages postés 80 Date d'inscription dimanche 29 décembre 2002 Statut Membre Dernière intervention 1 octobre 2004
3 juin 2004 à 02:30
Moi je dois dire je vois déjà pas l'utilité de ces 40 lignes de Select ... Case ... A mon sens c'est complètement ridicile de mettre ces "clés" en dur dans le code mais bon. Je verrais mieux un VRAI générateur de clés style itérateur. Ca allègerais le style...
vlad2i Messages postés 285 Date d'inscription mercredi 20 août 2003 Statut Membre Dernière intervention 13 février 2005
30 mai 2004 à 18:26
D'après moi, et je peux me tromper...

Ca revient au meme, 15 lignes de codes en mois, de faire
NbRnd = Rnd×41
Que de faire une boucle inutile avant de vérifier si on a dépassé...
Sharkiller Messages postés 71 Date d'inscription dimanche 12 octobre 2003 Statut Membre Dernière intervention 9 janvier 2009
29 mai 2004 à 22:47
oui, mais après, je pense pas qu'on puisse définir les clés à afficher...

Dis-moi si je me trompe...

@+
Sharky
vlad2i Messages postés 285 Date d'inscription mercredi 20 août 2003 Statut Membre Dernière intervention 13 février 2005
29 mai 2004 à 20:30
Je ne voudrais pas etre méchant, mais il y a juste qqch qui me tracasse...

D'après ce que je sais, tu pourrais remplacer tous tes for n 1 to 41... par un tout simple NbRnd fix(Rnd*41) qui te renverrais un entier entre 0 et 40... et puis +1 si tu veux qu'il soit entre 1 et 41...

Moi je dis ca c'est gratuit c'est juste une question que je me posais...

:P
Vlad
Rejoignez-nous