cs_neo12
Messages postés16Date d'inscriptionmercredi 29 mai 2002StatutMembreDernière intervention 5 novembre 2002
-
24 juin 2002 à 15:53
cs_Slan
Messages postés11Date d'inscriptionmercredi 28 août 2002StatutMembreDernière intervention 6 janvier 2003
-
28 août 2002 à 17:50
Bonjour,
j'ai un petit pb...
voiçi le postulat :
j'utilise une instruction PAINTPICTURE pour faire apparaître une image par mosaïque (l'image se remplit par petits rectangles placés de façon aléatoire jusqu'à remplir tout l'image. (10.000 rectangles)
Pour cela j'ai crée une fonction qui tire les coordonnées X et Y d'un nombre généré de façon aléatoire par Rnd (de 0 à 10.000) précédé de Randomize mis dans une boucle fon/Next allant jusqu'à 10.000 (nombre de coordonnées à utiliser)
problème :
La fonction randomize ne tirant que certains chiffres elle arrive en haut de la fourchette max avant d'avoir généré 10.000 nombres...et elle
repart du bas de la fourchette (puisque la boucle for/next n'est pas fini).
En faisant ça elle renvoit des fois des nombre déjà généré au permier "passage".
Donc quand ma boucle for/next se termine certaines coordonnées ont été tirés 2 fois minimum et certaines zéro.
Solution ?
Comment obliger le gestionnaire de nombre aléatoire à tirer tous les chiffres dans la fourchette de 0 à 10.000 (sans donc reprendre des nombres déjà tirés)
...ouf voilà si vous avez pigé le pb merci de me faire part de vos lumières
cs_Slan
Messages postés11Date d'inscriptionmercredi 28 août 2002StatutMembreDernière intervention 6 janvier 2003 28 août 2002 à 17:46
Salut neo12,
pour ton problème utilise un tableau qui représente ton écran de rectangle
Il y a en tout 10.000 rectangle à placer donc, on peut supposer que c'est pour une image de 100 sur 100 rectangles
voici le code que je te propose :
On Error Resume Next
Dim x, y, Cpt, Tabl(100,100)
cpt=0
Randomize Timer
Do
x = Fix(100 * rnd)
y = Fix(100 * rnd)
If Tabl(x,y) <> 1 then
Cpt = Cpt + 1
Tabl(x, y) = 1
[Instru pr placer ton rectangle...]
End if
Loop until Cpt >= 10000
Voila! si tu as d'autre questions mail-moi
Morphos@gmx.fr
cs_Slan
Messages postés11Date d'inscriptionmercredi 28 août 2002StatutMembreDernière intervention 6 janvier 2003 28 août 2002 à 17:50
Salut neo12,
pour ton problème utilise un tableau qui représente ton écran de rectangle
Il y a en tout 10.000 rectangle à placer donc, on peut supposer que c'est pour une image de 100 sur 100 rectangles
voici le code que je te propose :
On Error Resume Next
Dim x, y, Cpt, Tabl(100,100)
cpt=0
Randomize Timer
Do
x = Fix(100 * rnd)
y = Fix(100 * rnd)
If Tabl(x,y) <> 1 then
Cpt = Cpt + 1
Tabl(x, y) = 1
[Instru pr placer ton rectangle...]
End if
Loop until Cpt >= 10000
Voila! si tu as d'autre questions mail-moi
Morphos@gmx.fr