Fonction calcul Aleatoire sur TIA Portal
Fonction calcul Aleatoire sur TIA Portal
Bonjour,
Je souhaiterai faire une fonction qui permets de renvoyer une valeur comprise entre 0 et 20 .
Malheureusement la fonction Maths.Random() ( qui renvoi une valeur comprise entre 0 et 1 ) n'existe pas .
Quelqu'un a une idée ?
Je souhaiterai faire une fonction qui permets de renvoyer une valeur comprise entre 0 et 20 .
Malheureusement la fonction Maths.Random() ( qui renvoi une valeur comprise entre 0 et 1 ) n'existe pas .
Quelqu'un a une idée ?
Re: Fonction calcul Aleatoire sur TIA Portal
Cyril93
Niquel merci !!!!!!!!!!!!!!!!!!!!!
Niquel merci !!!!!!!!!!!!!!!!!!!!!
Re: Fonction calcul Aleatoire sur TIA Portal
Cyril93,
J'ai un soucis ça ne fonctionne pas et je ne comprends pas pourquoi
Comme tu peux le voir sur l'imprEcran, j'ai utilisé un bit de cadence pour incrementé la variable "Increment"
deuxieme ligne je mets 0 dans l'integer "Increment" si "Increment" > 20
et deja la y a un soucis car j'ai beau avoir mis la variable a 0, dans le comparateur elle vaut toujours 1457 pourtant c'est la meme variable tu as une idée ?
J'ai un soucis ça ne fonctionne pas et je ne comprends pas pourquoi
Comme tu peux le voir sur l'imprEcran, j'ai utilisé un bit de cadence pour incrementé la variable "Increment"
deuxieme ligne je mets 0 dans l'integer "Increment" si "Increment" > 20
et deja la y a un soucis car j'ai beau avoir mis la variable a 0, dans le comparateur elle vaut toujours 1457 pourtant c'est la meme variable tu as une idée ?
Re: Fonction calcul Aleatoire sur TIA Portal
La lecture du programme se fait ligne par ligne et du haut vers le bas.
Donc la valeur de #increment prise au moment de la comparaison est la valeur courante du compteur (réseau 1). Comme la valeur courante du compteur n'est pas remise à zéro, celle-ci continue à s'incrémenter. C'est donc normal vu la façon dont c'est programmé.
Donc la valeur de #increment prise au moment de la comparaison est la valeur courante du compteur (réseau 1). Comme la valeur courante du compteur n'est pas remise à zéro, celle-ci continue à s'incrémenter. C'est donc normal vu la façon dont c'est programmé.
Enseignant en BTS électrotechnique (Pas taper sur l'intru !)
Re: Fonction calcul Aleatoire sur TIA Portal
Je ne comprends pas vraiment quel est la différence avec ce reseau ladder ?
Re: Fonction calcul Aleatoire sur TIA Portal
J'ai reussi a resoudre mon probleme mais je ne comprends pas pourquoi la 1ere version est fausse
Re: Fonction calcul Aleatoire sur TIA Portal
Tu peut essayer de transcrire cette implémentation en SCL vu que tu es sur le TIA v13
https://en.wikipedia.org/wiki/Multiply-with-carry
https://en.wikipedia.org/wiki/Multiply-with-carry
Code : Tout sélectionner
uint32_t rand32(void)
{
uint32_t result = 0;
result = rand();
result <<= 16;
result |= rand();
return result;
}
// Init all engine parts with seed
void initCMWC(unsigned int seed)
{
srand(seed);
for (int i = 0; i < CMWC_CYCLE; i++) Q[i] = rand32();
do c = rand32(); while (c >= CMWC_C_MAX);
}
// CMWC engine
uint32_t randCMWC(void)
{
static uint32_t i = CMWC_CYCLE - 1;
uint64_t t = 0;
uint64_t a = 18782; // as Marsaglia recommends
uint32_t r = 0xfffffffe; // as Marsaglia recommends
uint32_t x = 0;
i = (i + 1) & (CMWC_CYCLE - 1);
t = a * Q[i] + c;
c = t >> 32;
x = t + c;
if (x < c)
{
x++;
c++;
}
return Q[i] = r - x;
}
int main()
{
unsigned int seed = time(NULL);
initCMWC(seed);
printf("Random CMWC: %u\n", randCMWC());
}Re: Fonction calcul Aleatoire sur TIA Portal
Alex,
ça a l'air un peux compliqué ton script, je vais tenter le coup quand même .
ça a l'air un peux compliqué ton script, je vais tenter le coup quand même .



