Poniendo el siguiente código en un .bat
echo %random%
Y apretando el .bat seguidamente sale un numero que se va incrementando poco a poco, en mi caso los millares se quedaban un buen rato, lo centenares también, pero las unidades y las decimas cambiaban cada vez que lo apretaba.
A donde quiero llegar? Pues queria saber de donde cojerá el numero base para hacer el numero aleatorio la variable de entorno %random%.
Mirando la serie de numero que me sale creo que tiene que ver con la hora, porque va en aumento mas o menos por segundos, y nunca disminuye.
Si alguien sabe algo de esto se lo agradeceria. Es tan solo por curiosidad.
Supongo que tal vez si puede utilizar la hora como semilla, pero igual no veo que pase lo que comentas
28001 3088 18589 2525 24407 22886 26931 14221 11307 25727
|
|
6505 16292 8701 20492 2559 1392 30253 7672 3840 16224
|
|
11716 1599 27463 9332 25872 12291 30017 3570 14991 221
|
|
Saludos
No se si lo habrás echo como yo, pero para verse como digo yo, con un aumento poco a poco, es abrir el batch repetidas veces, no hacer que el random se ejecute repetidas veces dentro del batch.
Este es el código qu e usado para sacrlo a las 13:00
echo %random% >> random.txt
Solo con esa linea y apretando doble click varias veces me a sacado esto.
9559
9562
9566
9569
9572
9575
9579
9582
Que yo sepa no hay especificación técnica sobre la semilla del RANDOM. :-\
Saludos puse el siguiente bat y lo unicie a las 10:22am
echo %random% >>random.txt
echo %random% >>random.txt
echo %random% >>random.txt
echo %random% >>random.txt
echo %random% >>random.txt
echo %random% >>random.txt
echo %random% >>random.txt
echo %random% >>random.txt
echo %random% >>random.txt
echo %random% >>random.txt
echo %random% >>random.txt
echo %random% >>random.txt
echo %random% >>random.txt
echo %random% >>random.txt
echo %random% >>random.txt
echo %random% >>random.txt
echo %random% >>random.txt
echo %random% >>random.txt
echo %random% >>random.txt
echo %random% >>random.txt
y me dio como resultado esto:
27470
31414
9464
5936
15938
7628
22301
24777
10906
16792
25726
13464
2199
13222
8583
7720
23333
14978
3232
27665
No se ve relación alguna entre un número y otro, ni idea entonces de cual sera la semilla para este generador.
Sin embargo,
si en el bat solo se deja una linea y lo ejecutas varias veces el número aumenta progrsivamente así como te sale.
echo %random% >>random.txt
28021
28025
28025
28028
28061
28064
que curioso ¿no?
Cómo ven el 28025 se repite 2 veces, si al bat de 1 linea lo ejecutas tan rapido como puedas dar click en el raton se repite mas veces
28462
28462
28462
28462
28466
28466
28466
28469
28469
28469
28472
28472
28472
28475
28475
28475
28475
No lo había comentado, pero había visto algo similar a eso hace un rato, si pones el echo %random% dentro de un bucle, te tira siempre el mismo número :huh:
Saludos
Yo creo que cambia a los segundos, a lo mejor no basa su numero en el tiempo, pero yo creo que si que basa el cambio de cifra a los segundos.
%date% %time% %random%
fijate si encontras algo como para pensar que la semilla es la hora , pero no se :/
No tiene que ver, los randoms toman cifras desvinculadas de las otras variables, lo único que comparten, a mi parecer, es de donde vienen, que son variables de entorno.
De echo hay randoms que cogen la primera cifra del tamaño de algún archivo del sistema y le aplican las operaciones necesarias (multiplicaciones, divisiones,...) para sacar la cifra aleatoria.
Lo más lógico es que tomara la hora del sistema. Hay veces en que se toma el PID del proceso.
Nov, que arroje el mismo valor se puede deber a que no se usa !var!.
Parece ser que la semilla random si se basa el hora y fecha porque probando con este batch:
@echo off
for /l %%i in (1,1,100) do cmd /c echo.%%random%% %%time%%
pause
La salida que produce es algo similar a esto:
27481 5:38:52,89
27481 5:38:52,95
27484 5:38:53,01
27484 5:38:53,09
27484 5:38:53,15
27484 5:38:53,23
27484 5:38:53,29
27484 5:38:53,82
27484 5:38:53,90
27484 5:38:53,96
27487 5:38:54,03
27487 5:38:54,09
27487 5:38:54,15
27487 5:38:54,23
Presione una tecla para continuar . . .
Donde se puede ver que el valor del random va cambiando conforme los segundos.
Ó tambien pueden probar ejecutando el siguiente batch:
@echo off
for /l %%i in (0) do cmd /c echo.%%random%% %%time%%
E ir cambiando la hora y la fecha del sistema y veran que existe algo de relación con el valor que da el random.
Referencia: http://blogs.msdn.com/b/oldnewthing/archive/2010/06/17/10026183.aspx