Este documento presenta información sobre la generación de números aleatorios en Visual Basic para cargar arreglos. Explica funciones como Rnd, Randomize e Int que permiten generar valores aleatorios, y cómo usarlas para llenar arreglos de manera aleatoria. También incluye ejemplos de código para generar matrices y vectores con valores aleatorios y botones para mostrar los arreglos y salir del programa.
1. Ing.Gladys Marlene López
Ing.Diosa S. Pérez
Ing. Mery Luz Pérez 202/04/15
Clase IV Carga aleatoria de arreglos
- Proceso de generar un valor aleatorio
- Funciones predefinidas para generar un valor ale
- Carga aleatoria de arreglos
- Ejemplos
- Ejercicios
2. Ing.Gladys Marlene López
Ing.Diosa S. Pérez
Ing. Mery Luz Pérez 302/04/15
Proceso de generar un valor aleatorio
En muchas ocasiones se necesita realizar
simulaciones, es decir, usar modelos que imiten a las
condiciones reales, que implican elementos
dependientes del azar. Por ejemplo simulaciones de
juegos de azar como dados, loterías, naipes, etc. En
dichas ocasiones es útil utilizar la computadora en unión
a un método generador de números aleatorios
Aleatorio es el proceso por el cual un número es
elegido o seleccionado al azar y el generador de
números aleatorios es el algoritmo que genera dichos
valores.
3. Ing.Gladys Marlene López
Ing.Diosa S. Pérez
Ing. Mery Luz Pérez 402/04/15
Proceso de generar un valor aleatorio
El generador de números aleatorios debe cumplir con las
siguientes características:
- Los números se generan por algún proceso aleatorio.
- Los números generados están dentro de un cierto rango
de valores.
- La probabilidad que se genere un número es la misma que
para cualquier otro valor del rango
Visual Basic incorpora una función predefinida que genera un
número real x en el rango de 0 a 1, satisfaciendo la segunda y
tercera característica, sin embargo no se genera un proceso
aleatorio sino que se genera de fórmulas matemáticas, por esa
razón los valores generados por dicha función se denominan
pseudoaleatorios, aunque al combinarlas con otras funciones
predefinidas son considerados aleatorios
4. Ing.Gladys Marlene López
Ing.Diosa S. Pérez
Ing. Mery Luz Pérez 502/04/15
Funciones y sentencias predefinidas para
crear valores aleatorios
Función Rnd
Sentencia Randomize
Función Int
5. Ing.Gladys Marlene López
Ing.Diosa S. Pérez
Ing. Mery Luz Pérez 602/04/15
Función Rnd
Ejemplo 1
Private Sub Form_Load()
Dim i As Integer, x As Single
Show
For i = 1 To 3
x = Rnd
Print x
Next i
End Sub
Genera un número aleatorio de doble precisión entre 0 y 1
(1 no incluido).
Clip para ver
otra
ejecución del
programa
Observe que se repite la
misma salida ya que las
formula siempre comienzan
en el mismo valor
Clip para ver
la ejecución
del programa
6. Ing.Gladys Marlene López
Ing.Diosa S. Pérez
Ing. Mery Luz Pérez 702/04/15
Sentencia Randomize
Ejemplo 2
Private Sub Form_Load()
Dim i As Integer, x As Single
Show
Randomize 100
For i = 1 To 3
x = Rnd
Print x
Next i
End Sub
Inicializa el generador de números aleatorios.
Randomize[expresión]
Clip para ver
la ejecución
del programa
Clip para ver
otra
ejecución del
programa
Observe que se repite la
misma salida ya que el
Randomize comienzan en el
mismo valor
7. Ing.Gladys Marlene López
Ing.Diosa S. Pérez
Ing. Mery Luz Pérez 802/04/15
Sentencia Randomize
Ejemplo 3
Private Sub Form_Load()
Dim i As Integer, x As Single
Show
Randomize
For i = 1 To 3
x = Rnd
Print x
Next i
End Sub
Clip para ver
la ejecución
del programa
Clip para ver
otra
ejecución del
programa
Observe que las salidas son
diferentes debido a que el
Randomize toma el valor
devuelto por el reloj del
sistema en cada corrida
8. Ing.Gladys Marlene López
Ing.Diosa S. Pérez
Ing. Mery Luz Pérez 902/04/15
Función Int
Convierte una expresión numérica a un entero.
Int(expresión)
Se debe combinar con la expresión que se muestra a continuación
porque sino al usarla solo con la función Rnd dará 0 (cero). Esta
expresión permite conseguir rango de valores aleatorios
Int((Límite_superior - Límite_inferior + 1) * Rnd + Límite_inferior)
Donde:
Límite_superior: Es el valor mas alto a generar
Límite_inferior: Es el valor mas pequeño a generar
9. Ing.Gladys Marlene López
Ing.Diosa S. Pérez
Ing. Mery Luz Pérez 1002/04/15
Función Int
Ejemplo 4: Genera tres valores aleatorios entre 10 y 50
Private Sub Form_Load()
Dim i As Integer, x As Integer
Show
Randomize
For i = 1 To 3
x = Int(41 * Rnd) + 10
Print x
Next i
End Sub
50-10 + 1 Clip para ver salida
10. Ing.Gladys Marlene López
Ing.Diosa S. Pérez
Ing. Mery Luz Pérez 1102/04/15
Carga aleatoria de arreglos
Dimensionar el arreglo
Activar la sentencia Randomize
Realizar los respectivos ciclos de carga y usar el
método de carga por asignación, en donde se le
asignará al arreglo en cada una de sus posiciones la
formula realizada con la función Rnd, acompañada si
es necesario de la función Int y demás parámetros.
11. Ing.Gladys Marlene López
Ing.Diosa S. Pérez
Ing. Mery Luz Pérez 1202/04/15
Ejemplo: hacer un programa para carga un
vector con 5 valores aleatorios entre 1 y 50
Private Sub Form_Load()
Dim I As Integer, vector(1 To 5) As Integer
Randomize
For I = 1 To 5
vector(I) = Int(Rnd * 50) + 1
Next I
Show
Print "Vector con valores aleatorios..."
For I = 1 To 5
Print vector(I);
Next I
End Sub
Clip para ver
la salida
12. Ing.Gladys Marlene López
Ing.Diosa S. Pérez
Ing. Mery Luz Pérez 1302/04/15
Elabore una aplicación en VB que permita activar los siguientes
botones de comando
Rnd302826Rnd1
24Rnd22Rnd120
1816Rnd11412
10Rnd18Rnd6
Rnd1420Rnd
Rnd son números aleatorios entre 10 y 20
Rnd1 números aleatororios entre 15 y 50
Ejemplo
Generar Matriz: genera la matriz de orden NxN
Mostrar Matriz: usando
control Picture
Generar Vector: Donde
cada elemento del vector es
la suma de cada fila de matriz
Mostrar Vector en una lista
Salir
13. Ing.Gladys Marlene López
Ing.Diosa S. Pérez
Ing. Mery Luz Pérez 1402/04/15
Código
Option Explicit
'Definiciones de arreglos y variables globales
Dim matriz() As Integer, n As Integer
Dim vector() As Integer
Private Sub Form_Load()
'Desactiva los botones antes de carga el arreglo
'Hace invisible los objetos que permite mostrar los arreglos
ImprimirM.Enabled = False : GenerarV.Enabled = False
ImprimirV.Enabled = False : Picture1.Visible = False
List1.Visible = False
End Sub
14. Ing.Gladys Marlene López
Ing.Diosa S. Pérez
Ing. Mery Luz Pérez 1502/04/15
Código continuación
Private Sub GenerarM_Click()
' Genera la matriz
Dim i As Integer, j As Integer, c As Integer
Do ' Valida el orden de la matriz
n = InputBox("Cantidad de filas y columnas")
Loop Until n > 0
' Redimensiona la matriz
ReDim matriz(1 To n, 1 To n)
'Desactiva los botones antes de carga el arreglo
'Hace invisible los objetos que permite mostrar los arreglos
ImprimirM.Enabled = False : GenerarV.Enabled = False
ImprimirV.Enabled = False : Picture1.Visible = False
List1.Visible = False
15. Ing.Gladys Marlene López
Ing.Diosa S. Pérez
Ing. Mery Luz Pérez 1602/04/15
Código continuación de generar matriz
c = 0
For i = 1 To n
For j = 1 To n
If i = j Then ' Diagonal Principal
matriz(i, j) = Int((11 * Rnd)) + 10
End If
If i + j = n + 1 Then ' Diagonal Secundaria
matriz(i, j) = Int((36 * Rnd)) + 15
End If
If i <> j And i + j <> n + 1 Then
matriz(i, j) = c : c = c + 2
End If
Next j, i
MsgBox "Arreglo generado"
ImprimirM.Enabled = True : GenerarV.Enabled = True
End Sub
16. Ing.Gladys Marlene López
Ing.Diosa S. Pérez
Ing. Mery Luz Pérez 1702/04/15
Código continuación
Private Sub ImprimirM_Click()
' Imprime la matriz generada
Dim i As Integer, j As Integer
Picture1.Visible = True: Picture1.Cls
For i = 1 To n
For j = 1 To n
Picture1.Print matriz(i, j);
Next j
Picture1.Print
Next i
End Sub
Private Sub GenerarV_Click()
Dim i As Integer, j As Integer
Dim suma As Integer
ReDim vector(1 To n)
For i = 1 To n
suma = 0
For j = 1 To n
suma = suma + matriz(i, j)
Next j
vector(i) = suma 'Genera el vector
Next i
MsgBox "Arreglo generado"
ImprimirV.Enabled = True
End Sub
Clip para
continuar
en esta
diapositiva
17. Ing.Gladys Marlene López
Ing.Diosa S. Pérez
Ing. Mery Luz Pérez 1802/04/15
Código continuación
Private Sub ImprimirV_Click()
' Imprime el vector generado
Dim i As Integer
List1.Visible = True: List1.Clear
For i = 1 To n
List1.AddItem vector(i)
Next i
End Sub
Private Sub Salir_Click()
'finaliza el programa
End
End Sub
Clip para
continuar en
esta
diapositiva
18. Ing.Gladys Marlene López
Ing.Diosa S. Pérez
Ing. Mery Luz Pérez 1902/04/15
Elabore una aplicación en VB que permita activar los
siguientes botones de comando
RndRndRndRndRnd
-14-1-2-3
-2-13-1-2
-3-2-12-1
RndRndRndRndRnd
Rnd son números aleatorios entre 1 y 50
Ejercicio Nro 1
Cargar la siguiente matriz de orden NxN con los siguientes valores
Generar Vector:
Posición 1: Mayor elemento
del contorno de la matriz
Posición 2: Porcentaje de
impares de la matriz
Las demás posiciones la
suma de cada fila
Imprimir arreglos: Muestra los
dos arreglos
Salir: sale de la aplicación
19. Ing.Gladys Marlene López
Ing.Diosa S. Pérez
Ing. Mery Luz Pérez 2002/04/15
Elabore una aplicación en VB que permita activar los
siguientes botones de comando
Rnd454035Rnd
256Rnd30Rnd25
12864Rnd2015
32Rnd16Rnd10
Rnd842Rnd
Rnd son números aleatorios entre 1 y 50
Ejercicio Nro 2
Cargar la siguiente matriz de orden NxN con los siguientes valores
Generar Vector:
Posición 1: Mayor elemento
del contorno de la matriz
Posición 2: Porcentaje de
impares de la matriz
Las demás posiciones la
suma de cada fila
Salir: sale de la aplicación
Imprimir arreglos: Muestra los dos arreglos
20. Ing.Gladys Marlene López
Ing.Diosa S. Pérez
Ing. Mery Luz Pérez 2102/04/15
Elabore una aplicación en VB que permita activar los
siguientes botones de comando
01Rnd34
-10Rnd23
RndRndRndRndRnd
-3-2Rnd01
-4-3Rnd-10
Rnd son números aleatorios entre 1 y 50
Ejercicio Nro 3
Cargar la siguiente matriz de orden NxN con los siguientes valores
Generar Vector: la posición 1 es
la suma de los elementos de la
DS. La segunda posición es la
cantidad de elementos negativos
que se encuentra de la mitad
hacia debajo de las filas de la
matriz. La tercera posición es el
elemento central de la matriz
Imprimir arreglos: Muestra los dos
arreglos
Salir: sale de la aplicación