Page 1 sur 1
[..] Enregistrer une valeur dans une variable à l'envers
Posté : lun. 14 oct. 2013 16:54
par parazitenew
Bonjour,
Le titre n'est pas assez clair, j'aimerai enregistrer une valeur issue de Random() après que le nombre ait été tiré.
Aulieu de faire: $rand = Random(1000,5000), on ferait l'inverse, soit: Random(1000,5000) => Enregistrement dans une variable => $rand.
Pourquoi?
J'aimerai executer une fonction tout les X secondes, où X est compris entre 1 et 5s aléatoirement.
Code : Tout sélectionner
AdlibRegister("Fonction",Random(1000,5000)"Enregistrement du chiffre dans une variable")
Pour que je puisse afficher plus loin ce chiffre sur la GUI.
Si je fais le Random() avant le AdlibRegister() le chiffre deviendra fixe.
Une idée?
Re: [..] Enregistrer une valeur dans une variable à l'envers
Posté : lun. 14 oct. 2013 17:06
par GaRydelaMer
Bonjour
une idée comme ca:
Code : Tout sélectionner
Global $timer = TimerInit(), $Rand = Random(1000, 5000)
AdlibRegister("Fonction", $Rand)
Func Fonction()
AdlibUnRegister("Fonction")
ConsoleWrite("test: " & $Rand & ", " & TimerDiff($timer) & @LF)
$Rand = Random(1000, 5000)
$timer = TimerInit()
AdlibRegister("Fonction", $Rand)
EndFunc
Func _Exit()
Exit
EndFunc
;;; Pour arrêter la Démo Touche Alt+X
HotKeySet("!x", "_Exit")
While True
WEnd
Re: [..] Enregistrer une valeur dans une variable à l'envers
Posté : lun. 14 oct. 2013 17:52
par parazitenew
Donc on désinscrit la fonction pour la réinscrire après avoir généré un nouveau délai d'attente, c'est bien pensé.
Je l'ai adapté à mon script et ça marche, merci.

Re: [..] Enregistrer une valeur dans une variable à l'envers
Posté : lun. 14 oct. 2013 17:54
par lesolutionneur
Le problème c'est que ce n'est pas très précis, il ne te donne pas la valeur exacte du nombre aléatoire donné en paramètre à AdlibRegister
Voici un code qui correspond mieux à tes attentes :
Code : Tout sélectionner
; Variable globale donnant le rand actuel
Global $g_rand
; Utiliser une fonction pour donner le rand permet de le sauvegarder dans la variable globale
AdlibRegister("Fonction", myRand())
; La fonction devant être exécutée au hasard toutes les x secondes
Func Fonction()
;On enlève la fonction actuelle
AdlibUnRegister("Fonction")
;Ici tu vois que $g_rand contient le temps actuel
ConsoleWrite("Temps actuel: " & $g_rand & @CRLF)
;On remet la fonction avec un nouveau temps
AdlibRegister("Fonction", myRand())
EndFunc
; Permet de quitter avec le HotKey
Func _Exit()
Exit
EndFunc
; On arrête la démo avec Alt + x
HotKeySet("!x", "_Exit")
While True
WEnd
;Cette fonction prend un nombre au hasard, le stocke dans une variable globale puis retourne le nombre aléatoire
Func myRand()
$g_rand = Random(1000, 5000)
Return $g_Rand
EndFunc
Re: [..] Enregistrer une valeur dans une variable à l'envers
Posté : lun. 14 oct. 2013 18:00
par parazitenew
@ Lesoluionneur merci mais le problème ne concerne pas le rand en lui même mais l'enregistrement de la fonction sous ce rand, pour récolter et afficher le rand j'utilise une autre méthode, la solution dont j'avais besoin était,
Code : Tout sélectionner
AdlibUnRegister()
Random(); Générer un chiffre
AdlibRegister() ; avec le nouveau chiffre
C'est le fait de désinscrire et de réinscrire la fonction.
Re: [R] Enregistrer une valeur dans une variable à l'envers
Posté : lun. 14 oct. 2013 18:26
par GaRydelaMer
Surtout que ma solution est exactement la même que lesolutionneur propose regarde cette ligne:
Global $timer = TimerInit(), $Rand = Random(1000, 5000)
la variable $rand est déclarer Globale :p pourquoi faire une fonction en plus pour retourner une valeur dans la variable $Rand une simple affectation de la fonction Random suffit !!!
Re: [R] Enregistrer une valeur dans une variable à l'envers
Posté : lun. 14 oct. 2013 18:36
par lesolutionneur
Tu remarqueras que je n'utilise qu'une seule fois la fonction rand et que mon code est allégé dans le sens où il n'utilise pas de timers.
De plus, je me suis conformé à la requête de parazitenew car il voulait récupérer cette variable et ma solution la lui donne exactement !
Mais bon c'est du chipotage, les deux versions marchent !
Edit : nevermind

Re: [R] Enregistrer une valeur dans une variable à l'envers
Posté : lun. 14 oct. 2013 19:14
par GaRydelaMer
Le timer ést la pour la démo, montrer que le temps écouler correspond à la valeur aléatoire de la variable $Rand à quelques micro seconde prés. Dans la demande il nous fournis aucune info sur le contenu de la fonction. Donc pour que la démo soit complète j'ai simplement mis le timer pour illustrer le principe.