Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: kraszic en 21 Septiembre 2007, 19:50 pm



Título: Numero aleatorio en batch
Publicado por: kraszic en 21 Septiembre 2007, 19:50 pm
Buena todo esta pregunta viene porq lei en el post de la programacion batch avanzada q escriviendo:
Código:
echo %random%
se obtenia un numero aleatorio y intente aprovechar esto para crear un programa q segun el numero aleaotorio saque un mensaje u otro algo asi como un sorteo...

Aqui os pongo el codigo q utilice para hacer el programa:
Código:
@echo off

title 20 POR CIENTO BY KRASZIC

set ran=%random%
echo %ran%
if %ran% LEQ 6554 goto suerte
if %ran% GTR 6554 goto nosuerte

:nosuerte
echo.
echo Mala suerte, sigue intentando
pause>nul
exit

:suerte
echo.
echo Esto es un 20 por ciento!
pause>nul
exit
bueno primero de todo decir, q el "echo %ran%" del principio esta puesto para comprovar q vaya bien el programa...
Despues de varias pruebas deduje q %random% saca un numero entre 0 y 32768 y entonces para crear en el programa un 20% de posibilidad de q apareciera ese mensaje divide ese numero entre 5 y le puse esa condicion.

Bueno y ahora paso a explicar el problema; el problema viene cuando ejectuto el programa y me da un numero por ejemplo el 16530, bueno pues cuando vuelvo a ejecutar el programa, me saca el numero 16538 (ejemplo) y cuando vuelvo a abrirlo otra vez me saca el numero 16545 y asi succesivamente y eso a mi me molesta porq me gustaria poder iniciarlo y q sacara un numero totalmente diferente para poder probarlo pero no se tampoco muy bien la utilizacion del comando %random% este asi q me gustaria q me aportarais alguna solucion.

saludos

PD: Si reinicio el ordenador o me espero unos 15 min el programa me vuelve a sacar otro numero aleatorio...


Título: Re: Numero aleatorio en batch
Publicado por: Ferсhu en 21 Septiembre 2007, 21:54 pm
no se de donde sacaste lo del 20 %, es mucho mas baja la probabilidad.

Citar
Bueno y ahora paso a explicar el problema; el problema viene cuando ejectuto el programa y me da un numero por ejemplo el 16530, bueno pues cuando vuelvo a ejecutar el programa, me saca el numero 16538 (ejemplo) y cuando vuelvo a abrirlo otra vez me saca el numero 16545 y asi succesivamente y eso a mi me molesta porq me gustaria poder iniciarlo y q sacara un numero totalmente diferente para poder probarlo pero no se tampoco muy bien la utilizacion del comando %random% este asi q me gustaria q me aportarais alguna solucion.

Creo q el random ese no es muy fiable, seguro q trabaja con los milisegundos o algo asi. Ami me saca numeros mas diferentes q eso, nose por q te los saca tan parecido.

Tambien podes jugar con los numeros del medio de la variable random q son mas aleatorios, por ej si keres numeros entre 0 y 99

Código:
set /A ran=%random:~1,2%
echo %ran%

Y para numeros mas grandes q 32768 podrias multiplicar por 2 o 3 pero claro hay algunos q no aparecerian. En ese caso podrias sacar 2 random y hacer operaciones entre ellos si keres obtener numeros aleatorios mas grandes.

Saludos.


Título: Re: Numero aleatorio en batch
Publicado por: kraszic en 22 Septiembre 2007, 12:05 pm
no se de donde sacaste lo del 20 %, es mucho mas baja la probabilidad.

Citar
Bueno y ahora paso a explicar el problema; el problema viene cuando ejectuto el programa y me da un numero por ejemplo el 16530, bueno pues cuando vuelvo a ejecutar el programa, me saca el numero 16538 (ejemplo) y cuando vuelvo a abrirlo otra vez me saca el numero 16545 y asi succesivamente y eso a mi me molesta porq me gustaria poder iniciarlo y q sacara un numero totalmente diferente para poder probarlo pero no se tampoco muy bien la utilizacion del comando %random% este asi q me gustaria q me aportarais alguna solucion.

Creo q el random ese no es muy fiable, seguro q trabaja con los milisegundos o algo asi. Ami me saca numeros mas diferentes q eso, nose por q te los saca tan parecido.

Tambien podes jugar con los numeros del medio de la variable random q son mas aleatorios, por ej si keres numeros entre 0 y 99

Código:
set /A ran=%random:~1,2%
echo %ran%

Y para numeros mas grandes q 32768 podrias multiplicar por 2 o 3 pero claro hay algunos q no aparecerian. En ese caso podrias sacar 2 random y hacer operaciones entre ellos si keres obtener numeros aleatorios mas grandes.

Saludos.

A ver si me he equivocado; si 100/5=20, tendre q dividir 32768/5 q es = a 6554... Si yo le pongo esa condicion no ekivaldria a un 20%??? Es q alomejor me estoy rayando yo...
Bueno, imaginaba q la variable random esta no seria muy buena para hacer este tipo de programas.

saludos

PD: Se podria hacer lo q quiero de alguna otra forma?