IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Scripts/Batch Discussion :

RANDOM entre 0 et 100 [Batch]


Sujet :

Scripts/Batch

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    140
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 140
    Par défaut RANDOM entre 0 et 100
    Bonjour, est ce possible (si oui comment faire?) de faire Un RANDOM qui génère des nombres entre 0 et 100?
    Si possible pouvoir faire comme le Random classique: Set nombre=%RANDOM%
    pour pouvoir utiliser ce nombre généré dans un autre endroit du programme!
    merci a+

  2. #2
    Membre Expert
    Avatar de I'm_HERE
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 013
    Par défaut
    Salut,

    c'est possible voici un petit code qui peux générer des nombres aléatoires au choix

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    @ECHO OFF & SETLOCAL ENABLEEXTENSIONS & SET/AMAX=%2,MIN=%1
    
    IF NOT DEFINED MAX IF NOT DEFINED MIN (GOTO:HELP)
    IF %MAX% LSS %MIN%                    (GOTO:HELP)
    SET/A_MAX=(MAX-MIN)+1,_EXP=%RANDOM%%%_MAX+MIN
    ECHO.
    ECHO   MIN=%min% 
    ECHO   MAX=%max% 
    ECHO   EXP=%%RANDOM%%%%%%%_MAX%+%MIN%
    ECHO   RAN=%_EXP%
    ENDLOCAL & EXIT /B
    :HELP :::::::::::::::::::::::::::::::::::::::::::::::::
    CLS
    ECHO.
    ECHO.
    ECHO USAGE: RANDOM min max
    ECHO        RANDOM
    ECHO.
    ECHO EXEMPLE: RANDOM 142 284
    ECHO.
    ECHO    MIN = 142                ^<- Minimum
    ECHO    MAX = 284                ^<- Maximum
    ECHO    EXP = %%RANDOM%%%%%%143+142  ^<- Expression
    ECHO    RAN = 164                ^<- Nombre Aleatoire
    ECHO.
    ECHO INFOS:  1- il faut que MIN =^< MAX
    ECHO         2- Intervale limiter de: 0 … 32767
    ECHO.
    goto:EOF
    :::::::::::::::::::::::::::::::::::::::::::::::::::::::
    il va générer l'expression qu'il faut mettre pour trouver un intervalle donné

    par exemple pour générer un nombre aléatoire entre 111 et 266
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    >RANDOM.bat 111 266
    
      MIN=111 
      MAX=266 
      EXP=%RANDOM%%%156+111
      RAN=216
    ensuite tu peux utiliser cette expression dans ton code

    la source du code

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    140
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 140
    Par défaut
    Merci.

    Donc c koi la commande pour faire que le nombre généré entre 0 et 100 "corresponde" à toto (par exemple) ?
    Un truc de ce genre? Set toto=%RANDOM% (entre 0 et 100)
    ?????
    merci
    a+

  4. #4
    Membre Expert
    Avatar de I'm_HERE
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 013
    Par défaut
    Citation Envoyé par pierreh51 Voir le message
    Merci.

    Donc c koi la commande pour faire que le nombre généré entre 0 et 100 "corresponde" à toto (par exemple) ?
    Un truc de ce genre? Set toto=%RANDOM% (entre 0 et 100)
    ?????
    merci
    a+
    j'ai pas compris ce que tu cherches à faire..si tu veux un RANDOM de 0 à 100
    alors le code que je t'ai donné fait ça...tu n'as qu'a faire un

    et exploiter l'expression générer

    si tu veux un RANDOM sur un ensemble de mots ? alors c'est autre chose... et ne reflète pas le titre de ton post "RANDOM entre 0 et 100"

    autre chose, si tu débute en script de commandes MS-DOS alors essayes plutôt de lire quelques tutoriels pour acquerir les quelques notions de bases

    c'est tout

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    140
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 140
    Par défaut
    slt alors je cherche à faire que le mot "toto" corresponde à un nombre entre 0 et 100.

    Si tu ne vois pas: Un Random "sans rien" %RANDOM%, on peut "le faire correspondre" au mot toto en faisant Set toto=%RANDOM%

    Donc je cherche à faire générer un nombre aléatoire entre 0 et 100 qui va s'appeler toto


    Bon, c'est pas très clair mais bon je vois pas trop comment t'expliquer

    Merci A+

  6. #6
    Membre Expert
    Avatar de I'm_HERE
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 013
    Par défaut
    peux tu donner un exemple plus concret..alors ce "toto" il doit être dans un fichier avec d'autres mots ou simplement dans une variable..si c'est dans un fichier alors il faut faire un RANDOM sur les enregistrements (record) et les champs (field) pour trouver un mot aléatoire (selon les ligne et les colonnes)

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    140
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 140
    Par défaut
    C'est pour par exemple réutiliser ce nombre dans un calcul
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Set toto=%RANDOM%
    Set x=823
    
    SET /a resultat=%toto%+%x%
    
    echo %resultat%
    
    pause


    par exemple
    si tu vois ce que je veux dire

  8. #8
    Membre émérite
    Avatar de maxim_um
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    895
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 895
    Par défaut
    Salut pierreh51,
    Salut I'm_HERE,

    Il veut juste que sa variable "toto" soit initialisée avec une valeur aléatoire comprise entre 0 et 100.

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    140
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 140
    Par défaut
    c exactement sa

  10. #10
    Membre Expert
    Avatar de I'm_HERE
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 013
    Par défaut
    salut maxim_um,

    Si c'est ça alors utilise mon script dans une invite de commande:

    ça t'affichera une chose du genre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
      MIN=111 
      MAX=266 
      EXP=%RANDOM%%%156+111
      RAN=216
    puis extraire la valeur en rouge (ici c'est fictif c'est pour l'exemple seulement)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    @echo off
    
    set/a toto=%RANDOM%%%156+111
    echo toto = %toto%
    
    Set x=823
    
    SET /a resultat=%toto%+%x%
    
    echo %resultat%
    
    pause

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    140
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 140
    Par défaut
    Alors salut Im'_HERE j'ai quelques question en rapport avec ton script:
    RANDOM.bat 0 100 -- doit-je le mettre dans RANDOM.bat (le fichier batch)
    si oui est ce que le batch ne devra contenir que sa ?
    car j'ai essayé mais sa fait sa:
    http://nsa09.casimages.com/img/2009/...4548167452.jpg

    et est ce possible d'automatiser tout sa (les 3 codes que tu as mis(extraire la valeur en rouge et tout et tout))??

    aide stp

  12. #12
    Membre Expert
    Avatar de I'm_HERE
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 013
    Par défaut
    qu'est ce que t'as mis dans le fichier random.bat ?

    une simple question, quel est "le but final" de ton script ?

  13. #13
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    140
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 140
    Par défaut
    Salut!
    alors dans mon fichier .bat, j'ai mis sa:

    RANDOM.bat 0 100


    et le but de mon truc c'est de faire un petit jeu (tu vas peut etre trouver sa nul mais bon, si tu veux savoir...) don tu as plusieurs essais pour trouver un nombre compris entre 0 et 100 par ex:
    Le nombre a trouver est 66
    tu tapes 44 et la tu as un echo qui dit plus haut
    tu tapes 79 et la tu as un echo qui dit plus bas
    tu tapes 66 et la tu as un echo qui dit ta trouvé

    ps: pour savoir si le nombre qui a été tapé est supérieur ou inférieur au nombre généré (c'est pour sa que je voulais pouvoir réutiliser le nombre généré) je vais m'aider d'un autre message que j'ai posté ya 5min (comparer deux nombres .......)!
    voilà si sa peut t'aider désolé de pas t'avoir dit plus tot!
    a+

  14. #14
    Membre Expert
    Avatar de I'm_HERE
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 013
    Par défaut
    laisse tombé mon script initial c'était juste pour automatiser la génération de nombres aléatoires.

    essayes plutôt ça

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    
    @echo off
    
    set/a toto=%RANDOM%%%101
    
    REM verification du nombre (0 - 100)
    echo toto = %toto%
    
    Set x=823
    
    SET /a resultat=%toto%+%x%
    
    REM verifier le resultat de "result"
    echo result = %resultat%
    
    pause

  15. #15
    Membre Expert
    Avatar de I'm_HERE
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 013
    Par défaut
    si ça peut t'aider j'ai fais il y a longtemps un code similaire, tu peux le modifier, l'améliorer,t'inspirer.. comme tu veux..

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    @echo off
    mode con: cols=30 Lines=15
    color e
    echo -----------------------------
    echo Presentation:
    echo.
    echo   NIVEAU DE DIFFICULTE: 3
    echo   NIVEAU DU JOUEUR    : 5
    echo.
    echo -----------------------------
    pause>nul
    cls
    echo.
    set/p niv=  choix du Niveau  1-3 :
    echo.
    echo ==============================
    echo.
      if %niv%==1 (
         set /a num=%RANDOM% %% 100
    ) else if %niv%==2 (
         set /a num=%RANDOM% %% 1000
    ) else if %niv%==3 (
         set /a num=%RANDOM% %% 10000
    ) else (goto:_exit) 
    :_error
    set/p ch=  Numero du Niveau[%niv%]:
          cls
          set/a steps+=1
    if %ch% lss %num% (
         echo.
         echo.
         echo.
         echo.
         echo.
         echo.
         echo            ERREUR       
         echo.
         color c
         ping -n 2 127.0.0.1 >NUL
         color f
         ping -n 2 127.0.0.1 >NUL
         cls
         echo.
         echo   RESULTAT: %ch% ^< ?
         echo.
         goto:_error
    ) else if %ch% gtr %num% (
         echo.
         echo.
         echo.
         echo.
         echo.
         echo.
         echo            ERREUR       
         echo.
         color c
         ping -n 2 127.0.0.1 >NUL
         color f
         ping -n 2 127.0.0.1 >NUL
         cls
         echo.
         echo   RESULTAT: %ch% ^> ?
         echo.
         goto:_error
    ) else (
        cls
        color e
        echo.
        echo  NUMERO VALIDE
        echo        %num%
        echo.
        echo.
        echo  NOMBRES DE TENTATIVES
        echo        %steps% fois
        echo.
        echo.
        echo  NIVEAU
    if %steps% geq 20 (
        echo   Va vite faire tes devoirs !!               
     ) else if %steps% leq 3 (
        echo     ***  Gourou  ***
     ) else if %steps% leq 6 (
        echo     Pres de la perfection
     ) else if %steps% leq 9 (
        echo     Pas mal !!
     ) else if %steps% leq 14 (
        echo     La tete Ailleur..
     ) else if %steps% leq 19 (
        echo     tristessssssse.. !!
     )
    )
    
    pause>nul

  16. #16
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    140
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 140
    Par défaut
    Merci t super cool
    mais dommage il est tard, demain=collège
    j'essayerai demain
    merci encore

  17. #17
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    140
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 140
    Par défaut
    je met le sujet résolu

  18. #18
    Membre Expert
    Avatar de I'm_HERE
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 013
    Par défaut
    Citation Envoyé par pierreh51 Voir le message
    mais dommage il est tard, demain=collège
    j'essayerai demain
    Bonne nuit, et bonne études

  19. #19
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 13
    Par défaut
    Bon, pour ce problème ca change rien, mais ce rand n'est plus uniforme (je sais pas si il l'est dans d'autres langages lorsqu'on change l'interval d'ailleurs...)

    T'as 1 chance sur 32.768 d'avoir n'importe quel nombre entre 0 et 32.767

    MAIS, avec %RANDOM% %% 100
    Tu as 327 chances sur 32.768 d'avoir n'importe quel nombre entre 0 et 67
    Tu as 326 chances sur 32.768 d'avoir n'importe quel nombre entre 68 et 99

    La différence est négligeable (0.003%), mais elle existe.

    Pour ton info Pierre, le %% 100 sert à diviser par 100 et garder le reste (division euclidienne)
    ex: 1567 / 100 = 15 + (67/100) donc 1567%%100 = 67
    Avec %% 100, c'est facile à voir, on garde simplement les 2 derniers chiffres

    Bon, ok, ca change rien mais ca me chifonne...

    Pour rendre le tout vraiment uniforme, il faudrait faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    :debut
    set rand=%RANDOM%
    IF %rand% ge 32700 (
    GOTO debut
    ) ELSE set /a resultat=%rand% %% 100
    Ca c'est pour avoir un nombre aléatoire entre 0 et 99 compris dans resultat
    pour etre entre 0 et 100 compris, remplacer les nombres en bleu par 32724 et 101

    Explication:
    On peut avoir une répartition uniforme entre 0 et (X-1) (soit X nombres possibles)
    Si on a un nombre aléatoire entre 0 et (un multiple de X) -1 (soit X*y nombres possibles)
    Donc, soit G le plus grand multiple de X inférieur au max (32.767)
    327*100 = 32.700 pour X=100 (objectif de 0 à 99)
    324*101 = 32.724 pour X=101 (objectif de 0 à 100)
    Si on a R=%RANDOM%, strictement inférieur à G: on peut faire resultat = R % 100 (ou 101)
    Si on a R supérieur ou égal à G : il faut relancer un random jusqu'a ce qu'on soit inférieur à G.

    Voilà, désolé de cette démo confuse, j'ai du mal a être clair et pourtant je suis d'humeur à couper les cheveux en 4

  20. #20
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    140
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 140
    Par défaut
    Merci je vais essayer sa

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Random entre 1111.. et 99999..
    Par ApocKalipsS dans le forum Requêtes
    Réponses: 1
    Dernier message: 14/01/2011, 22h11
  2. random entre -1 et 1 ?
    Par bigupgza37 dans le forum Langage
    Réponses: 2
    Dernier message: 28/12/2008, 20h24
  3. Random entre 0 et 99999
    Par Polux000 dans le forum Débuter avec Java
    Réponses: 2
    Dernier message: 10/11/2008, 17h00
  4. un float random entre 2 float
    Par denis.ws dans le forum Débuter avec Java
    Réponses: 2
    Dernier message: 20/03/2008, 15h16
  5. Tirage aléatoire d'un nombre entre 0 et 100
    Par parano dans le forum C++
    Réponses: 7
    Dernier message: 05/03/2007, 15h17

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo