vlad2i
Messages postés285Date d'inscriptionmercredi 20 août 2003StatutMembreDernière intervention13 février 2005
-
29 mai 2004 à 20:30
econs
Messages postés4030Date d'inscriptionmardi 13 mai 2003StatutMembreDernière intervention23 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.
econs
Messages postés4030Date d'inscriptionmardi 13 mai 2003StatutMembreDernière intervention23 décembre 200824 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.
# 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
# '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és6Date d'inscriptionmardi 4 juillet 2006StatutMembreDernière intervention10 septembre 2006 5 janv. 2007 à 10:57
ben si vous etes pas content, allez voir ailleur !
sinon faites le vous meme !
vlad2i
Messages postés285Date d'inscriptionmercredi 20 août 2003StatutMembreDernière intervention13 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és71Date d'inscriptiondimanche 12 octobre 2003StatutMembreDerniè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és80Date d'inscriptiondimanche 29 décembre 2002StatutMembreDerniè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és285Date d'inscriptionmercredi 20 août 2003StatutMembreDernière intervention13 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és71Date d'inscriptiondimanche 12 octobre 2003StatutMembreDerniè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és285Date d'inscriptionmercredi 20 août 2003StatutMembreDernière intervention13 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...
5 janv. 2007 à 12:23
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é.
5 janv. 2007 à 10:57
sinon faites le vous meme !
4 juin 2004 à 20:37
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 !
3 juin 2004 à 22:49
du moins, c'estc e que je pense...
c'est du basique, c'est que du texte, je le rappelle...
Merci et bonne prog
3 juin 2004 à 02:30
30 mai 2004 à 18:26
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é...
29 mai 2004 à 22:47
Dis-moi si je me trompe...
@+
Sharky
29 mai 2004 à 20:30
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