Page 3 sur 3

Publié : dim. 08/oct./2006 10:24
par djes
Il n'y a qu'une chose de vraiment aléatoire, c'est l'utilisateur. :D
Sinon vous avez la vitesse de rotation du ventilo, la température, la tension, etc :D

Publié : dim. 08/oct./2006 12:59
par SPH
Il faut imbriquer DATE et ELASTEDMILI en fait :
RandomSeed(Date()-ElapsedMilliseconds())

Publié : dim. 08/oct./2006 14:32
par SPH
En tout cas, je vais faire une synthese qui s'avere assez systematique :

Une question (interessante) :
SPH:
Apres avoir executer un quelconque randomseed, il est impossible de revenir au mode aleatoire de random.
Il devrait donc exister une instruction killrandomseed ou tuer le processus randomseed en lui passant la valeur 0 (ou une valeur negative)
Une reponse interessante :
DRI:
si tu veux en faire un toi même qui soit vraiment aléatoire donne ElapsedMilliseconds() comme germe aléatoire
Une reponse insensée (mais qui, au premier abord semble logique) :
Dobro:
ou bien un simple
Debug RandomSeed(Random(65535))
Il y a selon moi une impertinence d'un RandomSeed(Random(x)) provoquant un non retour au mode aleatoire.

Je millite pour un killrandomseed :
Debug Str(Random(100))+" : nombre entre 0 et 100 impossible a prevoir"
Debug Str(Random(100))+" : nombre entre 0 et 100 impossible a prevoir"
Debug Str(Random(100))+" : nombre entre 0 et 100 impossible a prevoir"
Debug Str(Random(100))+" : nombre entre 0 et 100 impossible a prevoir"
Debug ""
RandomSeed(100) : Debug "RandomSeed(100)"
Debug ""
Debug Str(Random(100))+" : le chiffre trouvé est 37"
Debug Str(Random(100))+" : le chiffre trouvé est 16"
Debug Str(Random(100))+" : le chiffre trouvé est 27"
Debug Str(Random(100))+" : le chiffre trouvé est 10"
Debug ""
RandomSeed(-1) : Debug "RandomSeed(-1)"
Debug "; Disons qu'on kill le process RandomSeed grace a '(-1)'"
Debug "; pour retrouver un réel mode aléatoire"
Debug ""
Debug Str(Random(100))+" : le chiffre sera 43; helas"
Debug Str(Random(100))+" : le chiffre sera 42; helas"
Debug Str(Random(100))+" : le chiffre sera 75; helas"
Debug Str(Random(100))+" : le chiffre sera 88; helas"
Debug ""
Debug "; Dommage, apres un RandomSeed, TOUS les nombres sont"
Debug "; previsibles meme quand on n'en veux plus..."
Debug "; Il manque un 'kill randomseed'"
La reponse bornée de Dobro :
Debug Str(Random(100))+" : nombre entre 0 et 100 impossible a prevoir"
Debug Str(Random(100))+" : nombre entre 0 et 100 impossible a prevoir"
Debug Str(Random(100))+" : nombre entre 0 et 100 impossible a prevoir"
Debug Str(Random(100))+" : nombre entre 0 et 100 impossible a prevoir"
Debug ""
RandomSeed(100) : Debug "RandomSeed(100)"
Debug ""
Debug Str(Random(100))+" : le chiffre trouvé est 37"
Debug Str(Random(100))+" : le chiffre trouvé est 16"
Debug Str(Random(100))+" : le chiffre trouvé est 27"
Debug Str(Random(100))+" : le chiffre trouvé est 10"
Debug ""
RandomSeed(Random(32000)) : Debug "RandomSeed(-1)"
Debug "; Disons qu'on kill le process RandomSeed grace a '(-1)'"
Debug "; pour retrouver un réel mode aléatoire"
Debug ""
Debug Str(Random(100))+" : le chiffre sera 43; helas"
Debug Str(Random(100))+" : le chiffre sera 42; helas"
Debug Str(Random(100))+" : le chiffre sera 75; helas"
Debug Str(Random(100))+" : le chiffre sera 88; helas"
Debug ""
Debug "; Dommage, apres un RandomSeed, TOUS les nombres sont"
Debug "; previsibles meme quand on n'en veux plus..."
Debug "; Il manque un 'kill randomseed'"
Les resultats montre le contraire d'un mode aleatoire :
15; 31; 93; 63
15; 31; 93; 63
15; 31; 93; 63
15; 31; 93; 63
15; 31; 93; 63
15; 31; 93; 63
15; 31; 93; 63

Malgré ca, Dobro se borne a croire en son RandomSeed(Random(xxx)) qui n'a AUCUN sens apres un precedent RandomSeed(xxxxx)
Il me dit meme :
je pense que t'a un problem avec ton ordi !!
chez moi mon programme en console fait varier les chiffres !!

en faisant "RandomSeed ( Random (32000))"
c'est evident qu'il fait changer le ramdom seed !!

si ça marche pas chez toi , c'est pas normal !
Cependant, apres avoir essuyé les insultes de "chercheur de merde", je montre le paradoxe d'un RandomSeed(Random(z)) voulant retablir le mode aleatoire quand il y a deja eu un premier RandomSeed.

La, Dobro comprend enfin ce paradoxe et se permet de le réexpliquer en reprenant betement mon explication alors que précédement, il n'avait rien capté :
c'est ce que Dri (et moi) lui avons dit au debut !!

il n'y a pas de mode reellement aléatoire avec un ordi
puisque la sequence est toujour prise a partir d'une liste immuable

en fait ton exemple montre que le premier random(100) est deja une sequence "previsible" car un RandomSeed(x) est effectué au lancement du compillateur ....
A noter que lui, defentait un randomseed(random(x)). Pourtant, il dit defendre ElapsedMilliseconds() !!

Puis il retombe tres naïvement dans sa logique pour oser reaffirmer :
donc cela revien a dire que mon RandomSeed(random(32000)) n'est pas plus idiot que RandomSeed(ElapsedMilliseconds()) !!!
Pourtant, RandomSeed(random(32000)) est TOTALEMENT NON ALEATOIRE...

PA - THE - TIQUE !! :roll:

Publié : dim. 08/oct./2006 14:46
par Dr. Dri
Là je suis d'accord avec le fait que ce code ne garantisse pas un nombre aléatoire.

Code : Tout sélectionner

RandomSeed(constante)
RandomSeed( Random(autre_constante) )
Debug Random(derniere_constante)
Là par contre je ne suis vraiment pas d'accord avec le fait que ce code ne garantisse pas un nombre aléatoire

Code : Tout sélectionner

RandomSeed(constante)
RandomSeed( ElapsedMilliseconds() )
Debug Random(derniere_constante)
Pourquoi je n'ai pas besoin de me servir en plus de la date ? pour la simple raison que la probabilité de tomber x fois de suite sur la MÊME milliseconde est TRES FAIBLE!

La raison est simple, à chaque lancement de ton programme les accès au disque seront +/- long selon sa position de départ, le temps que t'accorderas l'OS sera +/- important selon le nombre de processus lancés, la consommation du CPU, la quantité de RAM utilisée (et donc la quantité de mémoire paginée utilisée) etc etc

enfin bon... LOL quoi

Dri :lol:

Publié : dim. 08/oct./2006 14:54
par SPH
Dr. Dri a écrit :Là par contre je ne suis vraiment pas d'accord avec le fait que ce code ne garantisse pas un nombre aléatoire

Code : Tout sélectionner

RandomSeed(constante)
RandomSeed( ElapsedMilliseconds() )
Debug Random(derniere_constante)
TOTALEMENT DACCORD. Cependant, je me suis referé au manuel de PB :
Syntaxe

Resultat = ElapsedMilliseconds()
Description

Renvoie le nombre de millisecondes qui se sont écoulées depuis le démarrage de l'ordinateur. Cette fonction est relativement précise: il peut y avoir de légères différences en fonction de l'OS sur lequel le programme s'exécute.
Dr. Dri a écrit :Pourquoi je n'ai pas besoin de me servir en plus de la date ? pour la simple raison que la probabilité de tomber x fois de suite sur la MÊME milliseconde est TRES FAIBLE!
Dri :lol:
Je pense aussi que c'est faible... mais si tous les jours un programme demarre avec l'ordi, on pourrait croiser les memes tables...

Publié : dim. 08/oct./2006 15:42
par djes
Rarement vu un topic aussi dénué d'intérêt.

Publié : dim. 08/oct./2006 15:44
par SPH
djes a écrit :Rarement vu un topic aussi dénué d'intérêt.
Tu vas rejouir dodo la :wink:

Publié : lun. 09/oct./2006 17:44
par Dr. Dri
djes a écrit :Rarement vu un topic aussi dénué d'intérêt.
Bah en même temps je passe pas un jour sur le forum et je vois que tout un topic s'est enflammé, j'avoue m'ettre "légerrement" forcé à tout lire (sur la fin ca devien drole quand même)

Dri

Publié : lun. 09/oct./2006 22:20
par Backup
mon randomseed(random(x))
est a inclure dans une boucle bien sur !!
la boucle des events par exemple, mais cela me paraissait evident
d'ailleurs dans mon exemple avec la console (exemple qui marche tres bien)
cela marche parceque inclus dan une boucle créé avec un goto

le fait d'utiliser "RandomSeed( ElapsedMilliseconds() )"

reviens a la meme chose, sauf que le ElapsedMilliseconds() est une "boucle"
effectué ailleurs ! ... :?

un "randomseed(random(x))" dans une boucle d'event
(entre le repeat-until de la boucle principal ), n'est pas plus previsible que le
RandomSeed( ElapsedMilliseconds() ..... :roll:

Publié : mar. 10/oct./2006 18:36
par Dr. Dri
@Dobro
j'ai pas dit que ta méthode ne marchait pas, mais qu'elle ne fonctionnait pas directement après un randomseed avec une constante. Dans ce cas précis c'est prévisible ^^

Dri