[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. 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
    2. 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. 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. salut,

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

        Essaye ça :

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