08.02.2022 Views

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!