[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.
    25
    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!!!
      0
      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
        6
        1. 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
          2
          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.
            4
            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
              0
            2. @doyoubodoje me suis trompé ^^' c'est :
              set /a n=%random%%%51
              :D
              0
            3. un modulo c'est franchemant ingenieux ( le reste ne depasse jamais le diviseur )
              0
          2. 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)
            0
            1. 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
              1. tout à fait ! merci :D
                0
              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
                0
            2. 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
              9
              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
                0
            3. 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
              1. salut,

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

                Essaye ça :

                set /a n="%random%%3"
                2
                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