Randomize

Mrx3 Messages postés 24 Date d'inscription lundi 14 avril 2003 Statut Membre Dernière intervention 2 janvier 2007 - 15 juin 2003 à 19:32
vr3h Messages postés 164 Date d'inscription jeudi 6 mars 2003 Statut Membre Dernière intervention 9 octobre 2006 - 2 juil. 2003 à 14:58
Quand je fait :
r = Int(Rnd*255)+1

Comment empecher que r tombe 2 fois sur la même valeur ?
Par exemple r est choisit au hasard dans les 255 possibilité mais jamais une valeur est choisie deux fois de suite et donc quand r aurait fait toute les possibilité sa s'arreterai.

Y a t'il une fonction prédéfinie pour ça ou alors comment faire ?

Merci c assez urgent.

3 réponses

cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
15 juin 2003 à 19:42
Je ne pense pas qu'il existe une fonction pour cà ! Par contre, ce que tu peux faire, c'est stocker dans un tableau les 255 valeurs, puis, à chaque fois que r tombe sur une des valeurs, tu la remplace par '0' la valeur correspondante du tableau. Ensuite, si r retombe sur cette valeur, tu ignore la valeur. Je pense pas que ce soit la meilleure solution, mais c'en est une ;-)

DarK Sidious

[Responsable de la rubrique API et responsable VB du site www.ProgOtoP.com]
0
ShareVB Messages postés 2676 Date d'inscription vendredi 28 juin 2002 Statut Membre Dernière intervention 13 janvier 2016 26
15 juin 2003 à 19:47
salut

deja tu peux utiliser randomize

sinon avec du code :

DIm DejaUtilisé(1 to 255) as boolean
dim result(1 to 255) as byte

randomize
cnt = 1
do
r = Int(Rnd*255)+1
if not dejautilisé(r) then
dejautilisé(r) = true
resultat(cnt) = r
cnt = cnt + 1
end if
loop CNt = 255

seulement il y a peut etre risque de boucle infinie

voila

ShareVB
0
vr3h Messages postés 164 Date d'inscription jeudi 6 mars 2003 Statut Membre Dernière intervention 9 octobre 2006
2 juil. 2003 à 14:58
Autre possibilité utilisable unikement en VB, tu as :

Dim R as single
Dim RT as single
Dim T as Long
do
RT = int(rnd *255)+1
if not(T and RT) then
R = RT
T = T + 2^R
end if
loop while T < (<Somme des 2^x où x va de 1 à 256>)

Ceci n'est que théorique, je suis pas sur que le type long accepte un nombre de 2^256... a vérifier donc
0
Rejoignez-nous