firens
Messages postés68Date d'inscriptionlundi 6 novembre 2000StatutMembreDernière intervention24 août 2008
-
17 janv. 2006 à 21:05
firens
Messages postés68Date d'inscriptionlundi 6 novembre 2000StatutMembreDernière intervention24 août 2008
-
17 janv. 2006 à 22:32
Hello,
voila mon prob bizarre... j'ai fais une fonction qui permet de placer
une valeur TRUE dans un tableau en fonction de certaines comparaisons..
Pour générer l'index j'utilise un random sur une intervalle (c'est testé tout seul est ça fonctionne).
Malgré tout...lorsque je lance le programme ... il ne sort jamais de la
fonction.. par contre si j'utilise le débugger en faisant du pas a
pas.. la pas de problème..... A ne rien comprendre
A voir également:
Avec le debugger ca marche mais sans... ca marche pas
firens
Messages postés68Date d'inscriptionlundi 6 novembre 2000StatutMembreDernière intervention24 août 2008 17 janv. 2006 à 22:27
En fait la boucle n'est pas infinie mais bien finie :)
Le seul problème je viens de le remarquer.. c'est que pour un petit intervalle (par exemple 19 à 25) et bien on a une probabilité non-nulle de tomber sur un séquence à deux voir une solution... on a donc effectivement à ce moment là l'impossibilité de tomber sur le bon nombre....alors que l'on pourrait avoir 7 possibilités différentes si l'on avait une vrai séquence aléatoire...
je pensais donc faire la chose suivante... simplement multiplié par 100 l'intervalle à randomizé...puis divisé par 100 le résultat et faire un round du genre :
firens
Messages postés68Date d'inscriptionlundi 6 novembre 2000StatutMembreDernière intervention24 août 2008 17 janv. 2006 à 21:19
Et maintenant on va me dire qu'on comprend rien lol...
'pour placer aléatoirement une pub dans un interval donné
Private Function SelectHour(intvInterval As Interval, blValidAdvert()
As Boolean, blLastValidAdvert() As Boolean, intMinDeltaHourPermission
As Integer) As Integer
Dim intRandIntervalTemp As Integer
Dim blValidateExclusion As Boolean
Dim intMin As Integer
Dim intMax As Integer
blValidateExclusion = True
'si on trouve une seule exclusion dans l'index pub choisi alors on recommence
cs_casy
Messages postés7741Date d'inscriptionmercredi 1 septembre 2004StatutMembreDernière intervention24 septembre 201440 17 janv. 2006 à 21:58
Alors je n'ai pas réellement vu ton problème, il faut que tu vérifie tes conditions à l'intérieur du IF. Moi j'ai mis ce code en commentaire pour pouvoir tester et ça a l'air de marcher.
Par contre, j'ai vu 2 points :
- il te manque une condition de sortie de ta boucle, en effet si tu ne trouve pas de plage libre (soit utilisée la veille, soit utilisé aujourd'hui, soit trop près d'une autre), ta variable blValidateExclusion sera toujours à TRUE et tu ne sortira plus de ta boucle (boucle infini).
- revois tes tests blValidateExclusion blLastValidAdvert(intRandIntervalTemp) et blValidateExclusion blValidAdvert(intRandIntervalTemp). En effet même si ta plage a été utilisée la vielle (blLastValidAdvert=true) mais que ta plage n'est pas utilisée aujourd'hui (blValidAdvert=false) ta variable blValidate.. sera écrasé et prendra la valeur false et donc tu sélectionnera cette plage.
firens
Messages postés68Date d'inscriptionlundi 6 novembre 2000StatutMembreDernière intervention24 août 2008 17 janv. 2006 à 22:06
Oki merci
j'ai quand même pensé à une chose.. étant donnée que Randomize se base sur un timer.. on a donc une séquence pseudo-aléatoire...
Si on part tout le temps avec le même nombre... on aura donc la même séquence...au niveau du programme... la vitesse d'exécution pourrais poser problème j'ai l'impression...
Il n'y aurait pas moyen en VB d'avoir une séquence purement aléatoire (par modélisation d'un bruit blanc par exemple)...enfin c'est une idée je ne sais pas si tu connais des techniques valables ?
cs_casy
Messages postés7741Date d'inscriptionmercredi 1 septembre 2004StatutMembreDernière intervention24 septembre 201440 17 janv. 2006 à 22:19
Effectivement Randomize basé sur le timer renvoie un nombre pseudo-aléatoire, donc au bout d'un certain nombre d'appel, tu peux retomber sur la séquence.
Par contre je ne sais pas comment avoir un vrai nombre aléatoire, je ne me suis jamais posé la question, mais fait une recherche sur le site, il ya peut-etre la réponse.
Par contre pour ton code, tu gagnerais peut-etre à tout casser et à repenser ta fonctionnalité. Peut-etre que tu n'as pas pris la bonne piste. Cette possibilité de boucle infinie me perturbe.