[Batch] Un random définit ?

Résolu
Delzur -  
 LeXPlai3RmAx -
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. blackaagony Messages postés 23 Date d'inscription   Statut Membre 30
     
    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
  2. Dr.SoFtNaF Messages postés 21 Statut Membre 30
     
    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. issam
       
      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. MrRidYou
     
    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
  4. cs-bilou Messages postés 836 Statut Membre 164
     
    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. doyoubodo
       
      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
      1. doyoubodo > doyoubodo
         
        je me suis trompé ^^' c'est :
        set /a n=%random%%%51
        :D
        0
    2. Utilisateur anonyme
       
      un modulo c'est franchemant ingenieux ( le reste ne depasse jamais le diviseur )
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. blackaagony Messages postés 23 Date d'inscription   Statut Membre 30
     
    salut,

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

    Essaye ça :

    set /a n="%random%%3"
    2
  7. theo7777 Messages postés 117 Statut Membre 42
     
    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
  8. Delzur
     
    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
  9. Delzur
     
    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
  10. kikinou
     
    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. doyoubodo
       
      tout à fait ! merci :D
      0
    2. theo7777 Messages postés 117 Statut Membre 42
       
      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
  11. Anonyme
     
    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
  12. LeXPlai3RmAx
     
    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