Anuncios

Bienvenidos sean a este post, hoy veremos una de las aplicaciones mas utilizadas para este y otros lenguajes como son los numeros aleatorios.

Anuncios

Aunque estos en realidad no son completamente aleatorios, y porque decimos que no es completamente aleatoria? Porque las computadoras (normales) no estan preparadas para generar numeros al azar de la nada sino que deben seguir una determinada secuencia por una funcion para que dicha secuencia parezca aleatoria y este es el inconveniente mas grande porque un mismo codigo que genera numeros aleatorios siempre obtendra los mismos numeros y por lo tanto ya no sera realmente aleatorio, aca entra en accion la funcion Rnd.

Anuncios

Vamos a pensarlo de esta manera, el computador dispone de una lista interna con una secuencia de infinitos numeros escritos en ella, asi que dependiendo de donde se empiece a “leer” esta lista se obtendra una secuencia u otra, dicha secuencia se repetira si se comienza a leer desde el mismo punto, veamos el siguiente codigo:

random.vbs

dim numero

for a = 1 to 5
	numero = rnd()
	wscript.echo(numero)
next
Anuncios

En este caso usamos directamente rnd en un bucle for y que muestre el resultado en pantalla, el bucle for lo veremos mas adelante pero muy basicamente nos permite repetir la cantidad de veces que querramos un ciclo, en este caso lo haremos 5 veces, tomara un numero al azar y lo mostrara, veamos la salida

Si observan el video cada vez que ejecutamos el programa nos trae la misma secuencia de numeros, es decir que de al azar nada pero no se preocupen esto tiene una solucion haciendo la siguiente modificacion al codigo:

dim numero

randomize timer

for a = 1 to 5
	numero = rnd()
	wscript.echo(numero)
next
Anuncios

En este caso solo agregamos la linea randomize timer, randomize es el encargado de setear desde que numero iniciara la secuencia, una buena practica es dejarlo solo pero una mejor practica es agregar como en este caso la opcion de timer, porque la secuencia inicial dependera del reloj interno entonces nos asegura que no tendremos dos numeros iguales y como consecuencia una verdadera secuencia al azar, si lo probamos ahora veremos la siguiente salida

Anuncios

En este caso ahora si logramos un codigo que genera verdaderos numeros al azar pero todavia no hemos terminado, ya que rnd solo genera numeros al azar entre 0 y 1, como pueden ver todos comienzan con 0 la coma decimal y numeros pero y si nosotros necesitamos numeros enteros para un menu o para una accion vamos a modificar el codigo de la siguiente forma:

dim numero

randomize timer

for a = 1 to 5
	numero = int(rnd() * 10) + 1
	wscript.echo(numero)
next
Anuncios

En este caso modificamos la linea de numero dentro del bucle, primero usaremos a int para que elimine lo decimal, lo siguiente es tomar al numero a la azar y multiplicarlo por 10 para eliminar el 0 inicial, y por ultimo el + 1 impide que obtengamos cero, si lo probamos lo veremos de la siguiente forma

En este caso vemos como nos muestra numeros enteros pero con un solo inconveniente los numeros pueden repetirse lo cual puede ser un problema pero obviamente mas adelante podemos solucionarlos con algunos controles que nos permiten perfeccionar estos mecanismos pero este es el mas simple que encontraran en todo el internestor.

Anuncios

En resumen, hoy hemos visto como trabajan los numeros al azar, hemos visto como es el mecanismo, como funcion rnd, como falla, como se puede solucionar con randomize y un ejemplo que fuimos perfeccionando con el post, espero les haya sido util sigueme en tumblr, Twitter o Facebook para recibir una notificacion cada vez que subo un nuevo post en este blog, nos vemos en el proximo post.

Anuncios

Tengo un Patreon donde podes acceder de manera exclusiva a material para este blog antes de ser publicado, sigue los pasos del link para saber como.

Tambien podes comprar mi libro sobre VBscript en Amazon

Tambien podes donar

Es para mantenimiento del sitio, gracias!

$1.00