La variable d'environnement% RANDOM% donne un numéro unique [dupliquer]


0

J'ai des problèmes avec la %RANDOM%variable d'environnement dans la commande suivante:

FOR /l %%A in (0,1,30) do set /a results=1600 + %RANDOM% %% (1900 - 1600 + 1) && echo %%A--!results!

J'attends cette sortie:

0--1656
1--1743
2--1629
3--1887
…

Mais je reçois ceci:

0--1656
1--1656
2--1656
3--1656
…

La %RANDOM%variable est supposée renvoyer un nombre aléatoire, mais elle donne le même nombre. Quel est le problème et comment puis-je le résoudre?


@WernerHenze, en fait ce n'est pas; c'est plus proche de cette question .
Synetech

1
@ Synetech OK, mais au moins les réponses à la question que j'ai liée donnent la réponse à la question ici :).
Werner Henze

Réponses:


1

Vous devez également utiliser l’extension différée pour la RANDOMvariable:

FOR /l %%A in (0,1,30) do set /a results=1600 + !RANDOM! %% (1900 - 1600 + 1) && echo %%A--!results!

Capture d'écran d'une invite de commande avec les résultats attendus du script


Merci ... En utilisant une expansion retardée, cela a fonctionné comme je le voulais.
Hbelouf

Vous utilisiez déjà l'expansion retardée sur la resultsvariable, vous avez simplement oublié d'utiliser cette randomvariable. Vous devez utiliser !à la place de %pour toutes les variables d'une forboucle. ;-)
Synetech
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.