¿Cómo usar aleatorio en el script BATCH?
windows
random
windows-xp
batch-file
IAdapter
fuente
fuente
Respuestas:
%RANDOM%
le da un número aleatorio entre 0 y 32767.Usando una expresión como
SET /A test=%RANDOM% * 100 / 32768 + 1
, puede cambiar el rango a lo que quiera (aquí el rango es [1… 100] en lugar de [0… 32767]).fuente
SETLOCAL ENABLEDELAYEDEXPANSION
y usando en!RANDOM!
lugar de%RANDOM%
, como publicó Eugene.%RANDOM% * (%maxval% - %minval% + 1) / 32768 + %minval%
; simplemente configureminval
ymaxval
primero los valores apropiados.Puede controlar el rango del número con:
- producirá un número entre 0 ~ 99.
Éste:
- producirá un número entre 1 ~ 100.
fuente
%random% %%100
no es una sintaxis mágica, sino en realidad%random % %% 100
con un espacio menos, donde%%
es solo un escape%
que significa módulo).Probablemente desee obtener varios números aleatorios y es posible que desee poder especificar un rango diferente para cada uno, por lo que debe definir una función. En mi ejemplo, genero números del 25 al 30 con
call:rand 25 30
. Y el resultado está enRAND_NUM
después de que la función sale.fuente
fuente
Podrías hacerlo de esta manera, lo que no requiere
EnableDelayedExpansion
¿Dónde
max
está tu máximo ymin
tu mínimo? Esto no es muy eficiente, ya que podría tomar muchas rondas si su rango es demasiado pequeño. Además, esto no funcionará para números superiores a 32767.fuente
Digamos que quieres un número del 1 al 5; podría utilizar lo siguiente:
O puede usar: ~ 1,1 en lugar de: ~ -1,1. El: ~ -1,1 no es necesario, pero reduce en gran medida la cantidad de tiempo que se tarda en alcanzar el rango correcto. Digamos que quieres un número del 1 al 50, necesitamos decidir entre 2 dígitos y 1 dígito. Utilizar:
Puede agregar más a este algoritmo para decidir entre rangos grandes, como 1-1000.
fuente
goto
cuando puedes tener una línea como la anterior? Otras soluciones le permiten especificar explícitamente el rango. ¿Cuál es la ventaja de su código?ejemplo "
dará un número aleatorio entre 100 y 50. ¡Asegúrese de usar solo un signo de porcentaje como operando si no está usando la línea en un script por lotes!
fuente
fuente
simplificado con múltiples declaraciones IF y un montón de ((()))
fuente
Y solo para ser completamente aleatorio para aquellos que no siempre quieren una pantalla negra.
Esto cambiará el color de la pantalla y ambos son aleatorios.
fuente
Si divide por un valor grande, obtendrá una gran cantidad de duplicados uno tras otro. Lo que debe hacer es tomar el módulo del valor% RANDOM%:
fuente
aquí hay un ejemplo que creé para usted, debería mostrar un cuadro de diálogo pidiéndole que seleccione un número del 1 al 10, dependiendo del número que seleccione, generará un ejemplo de número aleatorio en un archivo por lotes que nombró. Si selecciona "1", obtendrá un ejemplo de número aleatorio de 1 dígito. si selecciona "10", obtendrá un ejemplo de número aleatorio de 10 dígitos.
fuente
ahora con todos los colores del arcoíris dos
fuente
Y para ser completamente aleatorio, una falta total de orden:
SET /A V=%random% %%15 +1
fuente