[Batch] Un random définit ? [Résolu/Fermé]

Signaler
-
 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

12 réponses

Messages postés
23
Date d'inscription
dimanche 19 novembre 2006
Statut
Membre
Dernière intervention
20 mars 2008
28
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.
23
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 77336 internautes nous ont dit merci ce mois-ci

Messages postés
21
Date d'inscription
vendredi 22 décembre 2006
Statut
Membre
Dernière intervention
19 octobre 2010
29
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
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
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
Messages postés
771
Date d'inscription
dimanche 2 décembre 2007
Statut
Membre
Dernière intervention
24 février 2011
153
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.
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
doyoubodo
je me suis trompé ^^' c'est :
set /a n=%random%%%51
:D
Utilisateur anonyme
un modulo c'est franchemant ingenieux ( le reste ne depasse jamais le diviseur )
Messages postés
23
Date d'inscription
dimanche 19 novembre 2006
Statut
Membre
Dernière intervention
20 mars 2008
28
salut,

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

Essaye ça :

set /a n="%random%%3"
Messages postés
106
Date d'inscription
mercredi 24 mars 2010
Statut
Membre
Dernière intervention
12 janvier 2013
41
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
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 !
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
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 ^^
tout à fait ! merci :D
theo7777
Messages postés
106
Date d'inscription
mercredi 24 mars 2010
Statut
Membre
Dernière intervention
12 janvier 2013
41
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
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)

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!!!