Tous les chiffres du générateur aléatoire ?

Messages postés
16
Date d'inscription
mercredi 29 mai 2002
Statut
Membre
Dernière intervention
5 novembre 2002
-
Messages postés
11
Date d'inscription
mercredi 28 août 2002
Statut
Membre
Dernière intervention
6 janvier 2003
-
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

A+

2 réponses

Messages postés
11
Date d'inscription
mercredi 28 août 2002
Statut
Membre
Dernière intervention
6 janvier 2003

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
Messages postés
11
Date d'inscription
mercredi 28 août 2002
Statut
Membre
Dernière intervention
6 janvier 2003

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