[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
A voir également:

12 réponses

blackaagony Messages postés 25 Date d'inscription   Statut Membre Dernière intervention   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.
25
Dr.SoFtNaF Messages postés 21 Date d'inscription   Statut Membre Dernière intervention   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
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
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
cs-bilou Messages postés 769 Date d'inscription   Statut Membre Dernière intervention   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
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
doyoubodo > doyoubodo
 
je me suis trompé ^^' c'est :
set /a n=%random%%%51
:D
0
Utilisateur anonyme
 
un modulo c'est franchemant ingenieux ( le reste ne depasse jamais le diviseur )
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
blackaagony Messages postés 25 Date d'inscription   Statut Membre Dernière intervention   28
 
salut,

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

Essaye ça :

set /a n="%random%%3"
2
theo7777 Messages postés 104 Date d'inscription   Statut Membre Dernière intervention   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
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
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
Delzur
 
ohé ??
1
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
doyoubodo
 
tout à fait ! merci :D
0
theo7777 Messages postés 104 Date d'inscription   Statut Membre Dernière intervention   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
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
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