[Batch] Un random définit ?

Résolu
Voila je voudrais demander, car j'ai vu sur un topic que les random étaient possible, la commande set var = %random%, mais ets-ce possible de donner un ensemble de définition ? j'ai bien tenté un set /a var = %random(0-2)% (lol, je sais, c'était mal barré ) mais il m'a dit "il manque une opérande"
comment donner une ensemble ?
(quelle est cette erreur ?)
Merci de m'avoir lu
Configuration: Windows XP
Internet Explorer 6.0

12 réponses

  1. Salut,
    si ça t'interesse encore,

    set /a n="%random%%5"

    génère un nombre compris entre 0 et 4. Pour fixer le minimum a 2 par exemple, additionne simplement 2 à n, et réajuste le diviseur (5 ici).

    Pour générer un nom entre 2 et 4, tu va taper ceci :

    set /a n="%random%%3+2"

    Plus généralement, tu va donc utiliser la formule : "%random%%x+y"

    Où y= valeur min et
    x = valeur max -y + 1

    Si je ne me trompe pas...

    Bon courage.
    1. en fait je cherche un nombre aléatoire entre 0-2

      et je préçise que je le souhaite

      entier

      avec 0 et 2 inclus !
      1. salut,

        A mon avis il faut se pencher du coté du modulo.

        Essaye ça :

        set /a n="%random%%3"
        1. Salut j'ai éssayé ton code mais j'avoue que j'ai pas compris... en fait ça reviens a un truc genre n=%random%*3 non ?

          voila si tu pouvais m'expliquer un peu plus ^^

          Merci
          1. voici mon code qui génre aléatoirement entre 0 1 2

            @echo off
            
            set /a n=%random%%%3
            echo %n%
            
            pause


            il faut 3% pour qu'il s'excute c'est pas juste %random% ou %random%% il faut %random%%%

            je sais pas pk mais ça marche %leul% :d
            Bon courage
            1. c'est %random% %% 3 et on peut l'écrire sans espaces :)
              %% c'est un opérateur c'est comme si tu dit x %% y
              le x c'est %random% et le y c'est 3
          2. tu aurais pu aussi faire un code du genre

            @echo
            :un
            set a=%random%
            if %a%=0 goto deux
            if %a%=1 goto deux
            if %a%=2 goto deux
            goto un
            :deux
            echo %a%
            echo.
            pause

            meme si je repond un peu tard sa peut toujours servir a quelqu'un ^^
            1. tout à fait ! merci :D
            2. Parfois c'est long
              Code rapide
              @echo off
              set /a maximum=2+1
              set a=%random%%%maximum
              rem Si il y a pas le +1 ca aurait fait un nombre entre 0 et 1
          3. il y a quelques fautes dans le code de kikinou.
            Code corrigé :
            @echo off
            :un
            set a=%random%
            if %a%==0 goto deux
            if %a%==1 goto deux
            if %a%==2 goto deux
            goto un
            :deux
            echo %a%
            echo.
            pause

            Voila parce que sinon ça plante.

            Sinon merci c'est exactement ce qui me fallait ! (même si ce code met un moment avant de tomber sur un des trois chiffres)
            1. Salut avec ton code tu va faire tourner l'ordi comme un porc jusqu'à ceux qui trouve un nombre entre 0 et 2.

              Alors que comme ça, c'est beaucoup mieux:
              @echo off
              set /a random2=%random%%%3
              echo %random2%
              pause


              Bilou.
              1. Oui, merci, je m'en suis aperçu après ^^
                sur le coup, j'ai fait attention qu'aux étiquettes :S (j'en suis fou, je les adore ... c'est con mais c'est comme ça)
                bref, je l'ai remodifié, le but étant de générer un nombre entre 0 et 50 un certain nombre de fois (qui n'est pas défini)
                et je m'en suis sorti avec ça

                @echo off

                :un
                set /a n=%random%%%50
                echo %n%

                pause
                goto un
              2. @doyoubodoje me suis trompé ^^' c'est :
                set /a n=%random%%%51
                :D
              3. un modulo c'est franchemant ingenieux ( le reste ne depasse jamais le diviseur )
            2. Pour des nombres entre 0 et 9 ou 1 et 10 essaye ca
              @echo off   
              set nombre=%random:~-1%   
              rem Si tu veux un nombre entre 1 et 10 la ligne suivante va etre utile   
              set /a nombre=nombre+1

              Et pour des nombres entre 0 et 99 ou 1 et 100 essaye ca
              @echo off   
              set nombre=%random:~-2%   
              if %nombre:~0,-1%==0 set nombre=%nombre:~1%   
              rem Si tu veux un nombre entre 1 et 100 la ligne suivante va etre utile   
              set /a nombre=nombre+1

              Et pour des nombres entre 0 et n essaye
              @echo off   
              rem %n% est le maximum   
              set /a n=n+1   
              set /a nombre=%random%%%n

              Et enfin pour des nombres entre 1 et n essaye enfin ce dernier code
              @echo off   
              rem %n% est le maximum   
              set /a nombre=%random%%%n   
              set /a nombre=nombre+1

              Je pense que j'ai tout explique
              Je me demande pourquoi ca ne marche pas avec 2 % ca fait pas le resultat voulu mais avec 3 % ca marche
              1. Pour résoudre tout les problème voici un script qui demande le maximum le minimum pour générer un nombre aléatoire.

                @ECHO off
                SET /p max=max ^> 
                SET /p min=min ^> 
                SET /a m=%max%
                SET /a mi=%min%
                SET /a n=%mi%
                SET /a x=%mi% + 1
                SET /a x=%m% - %x%
                SET /a nb=%random% %% %x%+%n%
                ECHO %nb%
                PAUSE
                EXIT
                

                Maintenant pour l'adapter a n'importe quels nombres remplacez x par le maximum et y par le minimum

                SET /a m=x
                SET /a mi=y
                SET /a n=%mi%
                SET /a x=%mi% + 1
                SET /a x=%m% - %x%
                SET /a nb=%random% %% %x%+%n%
                ECHO %nb%
                

                @+, en espérant avoir été utile a quelqu'un et merci à blackaagony pour sa réponse qui m'a aidée a écrire ce script
                1. Bon Pour faire simple.

                  set /a exemple=%random% %%101
                  (la on m'ait la variable "%exemple%" a un chiffre (Nombre) entre 101 est -1 Non Inclut )

                  pour afficher on peut faire sa.

                  echo %exemple%
                  pause

                  merci de clore le sujet avec le bouton!!!