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?

Hbelouf
la source
@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

Synetech
la source
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