Dependiendo de nuestra aplicación usaremos los números aleatorios.
Números al azar, para los juegos, para una aplicación de
calculo,estadística
Los llamamos números aleatorios, pero no existen como tales en
Gambas,
el nombre mas adecuado es pseudo-aleatorio. Llega un momento que
se pueden repetir, entonces dejan de ser tan aleatorios.
Tenemos dos funciones principales para el manejo de estos números.
- Randomize
- Rnd
Randomize:
Randomize inicia el generador de números pseudo-aleatorios.
Podemos darles un número a esta función.
Randomize Numero Entero
Con lo que generación de los números siempre serian iguales. Se
repetirían
O dejarlo sin el valor, lo que lo hace diferente en cada generación.
Randomize
Solemos usar la función Randomize solamente una vez en la
aplicación.
Al inicio en Form_Open() por ejemplo.
Rnd:
De por si sola, la función nos devuelve un número decimal 0 y 1.
Ejemplo:
---código---
Public
Sub
Form_Open()
Dim
x As
Integer
Randomize
'Generar
5 números decimales entre 0 y 1
For
x =
1
To
5
Print
Rnd
Next
End
---código---
Si nosotros hubiésemos asignado el resultado de la función RND a un
número entero.
Estaríamos diciendo que la salida va ser del tipo entero. Estamos
creando
unas propiedades para la variable de salida y lo más normal que su
valor hubiera sido siempre 0.Al decir que el tipo es entero.
Ahora bien, la función RND permite la generación de un número
dentro de un intervalo.
RND(mínimo,máximo)
Cuando decimos
---código---
PRINT
RND(1,10)
'Entre 1
y 9
--código---
Le decimos realmente que el número generado es entre 1 y 9. Así que
si queremos
que el número generado este realmente entre 1 y 10 debemos usar
---código---
PRINT
RND(1,11)
'Entre 1
y 10
--código---
Para la generación de números enteros debemos hacer uso de la
función INT.
Comprobar la diferencia a no usar la función INT a usarla.
---código---
PRINT
RND(1,11) 'Número
decimal
PRINT
INT
(RND(1,11)) 'Número
entero
---código---
El
caso más típico de la generación de un dado de 6 caras.
---código---
Public
Sub
Form_Open()
Dim
x As
Integer
Randomize
For
x =
1
To
6
Print
Int(Rnd(1,
7))
Next
End
---código---
Ejemplo
de la tirada de un dado con imágenes
---código---
'
Gambas class file
Private
dado As
PictureBox 'Definimos
un objeto del tipo PictureBox
Public
Sub
_new()
End
Public
Sub
Form_Open()
Me.Title
=
"DADO"
Me.Center
End
Public
Sub
BtnDado_Click()
dado =
New
PictureBox(Me)
'Creamos
el objeto picturebox que contendrá la imagen del dado
'Damos
propiedades al objeto dado
With
dado
.x
=
56
.y
=
24
.Height
=
64
.Width
=
64
.Stretch
=
True
.Border
=
Border.Sunken
.Picture
=
Picture[muestradados() &
".gif"]
End
With
End
Public
Function
muestradados() As
Integer
Dim
i As
Integer
Dim
cara As
Integer
'Estamos
generando 6 veces el dado. Para que el dado cambie su imagen
'Si
este número se repite no percibimos el cambio de cara
For
i =
1
To
6
cara =
Int(Rnd(0,
6))
dado.Picture
=
Picture[cara &
".gif"]
Wait 0.3
'Añadimos
un retardo para percibir ese cambio de cara del dado
Next
Return
cara
End
---código---
Mas información en:
No hay comentarios:
Publicar un comentario