[Batch] Sabeis en que se basa el numero aleatorio de la variable %random%?

Iniciado por moikano→@, 14 Diciembre 2010, 12:51 PM

0 Miembros y 2 Visitantes están viendo este tema.

moikano→@

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.

Novlucker

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
Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD

"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein

moikano→@

#2
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

leogtz

Que yo sepa no hay especificación técnica sobre la semilla del RANDOM.  :-\
Código (perl) [Seleccionar]

(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}

http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com

FJPPitta

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
Saludos
FJPPittta

Novlucker

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
Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD

"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein

moikano→@

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.

Darioxhcx

%date% %time% %random%

fijate si encontras algo como para pensar que la semilla es la hora  , pero no se :/

moikano→@

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.

leogtz

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!.
Código (perl) [Seleccionar]

(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}

http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com