batch-file-es Windows
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
dígitos no funcionará. Por eso solo extraemos el último carácter. En este caso, tenemos un 6
%random:~-1% , que genera el máximo de 999999 y el mínimo de 000000 ; es posible que deba ajustar
esto para que se ajuste a sus necesidades.
Pseudoaleatorio
cmd.exe genera la semilla en función del momento en que se inició la sección de cmd , por lo que si
inicia la sección de mutliple casi al mismo tiempo, es posible que el resultado no sea lo
suficientemente aleatorio.
Alfabetos al azar
Desafortunadamente, los lotes no tienen un método incorporado para generar alfabetos, pero al
usar %random% y for ciclo, podemos 'generar' alfabetos.
Esta es una idea simple de cómo funciona esto.
set /a result=(%random%*26/32768)+1
for /f "tokens=%result%" %%I in ("A B C D E F G H I J K L M N O P Q R S T U V W X Y Z") do (
echo %%I
)
• El primer set /a declaración genera un número aleatorio N entre 1 y 26
• La instrucción for /f selecciona el elemento N th de una lista de la A a la Z.
○ Devolver el resultado
Uno puede poner un total de 31 artículos en 1 for bucle, y prácticamente artículos ilimitados
usando [este método]. ( Lote - para orden de parámetros de bucle
Pseudoaleatorio y uniforme al azar en lote
Distribución pseudoaleatoria
De acuerdo con esta respuesta de desbordamiento de pila , el usuario CherryDT señaló este
código:
set /a num=%random% %% 100
No da una distribución uniforme.
La variable dinámica interna %random% hace da una distribución uniforme, pero el código de
seguridad no será un azar uniformado. Este código genera un número aleatorio entre 0 ~ 99, pero
el resultado no será uniforme. 0 ~ 67 ocurrirán más de 68 ~ 99 desde 32767 MOD 100 = 67 .
Para generar una distribución aleatoria uniforme usando el código anterior, entonces se debe
cambiar 100 . Aquí hay un método para obtener un número que crea una distribución uniforme.
https://riptutorial.com/es/home 6