Random($FFFFFFFF)

Archive.
Dr. Dri
Messages : 2527
Inscription : ven. 23/janv./2004 18:10

Random($FFFFFFFF)

Message par Dr. Dri »

la fonction random n'est plus si aléatoire que ca avec cette valeur... chez moi elle ne renvoi que $80000000

Code : Tout sélectionner

RandomSeed( ElapsedMilliseconds() )
For i = 1 To 10
  j = Random($FFFFFFFF)
  Debug Hex(j)
Next i
Dri
comtois
Messages : 5186
Inscription : mer. 21/janv./2004 17:48
Contact :

Message par comtois »

Dans l'aide , tu peux lire ça :

Long 4 octets en mémoire ,plage de -2147483648 à +2147483647

et 2147483647 en Hexa , ça donne $7FFFFFFF

Donc si tu mets Random($7FFFFFFF) , c'est la limite possible .

Du moins je pense ?
Dr. Dri
Messages : 2527
Inscription : ven. 23/janv./2004 18:10

Message par Dr. Dri »

Le problème c'est que Random ne renvoie que des valeurs non signées et prend en paramètre un entier signé (un peu comme la fonction Hex) donc toute valeur négative lui fait perdre ses moyens et au final il renvoie justement la valeur négative la plus petite d'un long...

Il serait peut être bien qu'en interne la fonction gère soit tout de facon non-signée soit faire un Abs() sur le paramètre reçu.

Dri
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Message par Le Soldat Inconnu »

la fonction random n'est plus si aléatoire que ca avec cette valeur...
C'est surtout que $FFFFFFFF = -1
Et un radom sur un nombre négatif, ça ne marche pas. Après le debugger rale pas, c'est un choix ou un oubli

De toute façon, un random ne marche pas avec une valeur signée donc forcément, il va renvoyer ce qu'il peut, la pauvre bête :mrgreen:
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
Répondre