Les amis vous cherchez inutilement la complication...
La fonction "MOD" (c'est-à-dire "Modulo" ou en français "Reste de la division") existe déjà: c'est l'item "%" ...
quelque chose du genre suffit (cliquer sur l'image pour l'agrandir):
[ATTACH=CONFIG]402[/ATTACH]
Vous obtenez ainsi un nombre N entre 1 et 2^31-2, soit 2147483646.
Pour ramener N dans une gamme de 0 à 100 par ex, vous faites un truc comme
A = 100*(N-1)/214748364
5
(éventuellement vous pouvez l'arrondir tout dépend de ce que vous cherchez à faire) ...
Mais comme je l'ai dit c'est encore plus facile avec du javascript ...
Vous créez un équipement (dans n'importe quel connecteur qui accepte du JS), avec :
- un retour d'état X (double)
- une commande JS que vous appelez Aleatoire (par ex.) et qui contient comme seul et unique code:
Vous pouvez ensuite appeler la commande "Aleatoire" de l'équipement depuis n'importe quel automate et lire le résultat dans son état "X" ...
Si vous voulez vraiment faire une commande plus pratique encore en JS avec un min et un max (en entiers) vous mettez dans la commande "Aleatoire" un code du genre:
Code PHP :
min = parseInt('{valeurMin}')|0; // la commande accepte en paramètres une "valeurMin" et une "valeurMax". Attention, dans les automates ca doit être des "chaines" ...
max = parseInt('{valeurMax}')|0; // la fonction parseInt transforme la chaine en nombre entier.
// Le "|0" sert juste à dire que si la conversion chaine->nombre a échoué, alors on utilise 0 (ca évite bien des soucis à la sauvegarde du JS)
X = Math.floor(Math.random() * (max - min + 1)) + min;
Références:
http://stackoverflow.com/questions/15278...ific-range
Attention à bien laisser le temps à la commande JS de s'exécuter (ca va très vite normalement mais tout dépend de la charge de la LD) ... soit vous attendez x msec entre la commande et l'utilisation de l'état X (bof), soit vous synchronisez l'automate avec le JS (bien mieux): par ex. vous "attendez" que le JS renvoie dans un X une valeur différente de celle qui était connue juste avant d'appeler la commande "Aleatoire":
- VAR ancienX = monEquipementJS->Etat "X"
- ACTION monEquipementJS->Aleatoire
- WAIT Jusqu'à ce que: monEquipementJS->Etat "X" <> ancienX
- (utiliser la nouvelle valeur de monEquipementJS->Etat "X")