Arreglos aleatorios visual Basic 6.0

20
Ing.Gladys Marlene López Ing.Diosa S. Pérez Ing. Mery Luz Pérez 2 02/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

Transcript of Arreglos aleatorios visual Basic 6.0

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 aleatorio.- Carga aleatoria de arreglos- Ejemplos- Ejercicios

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.

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 rangoVisual 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

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

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 iEnd 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

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 iEnd 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

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 iEnd 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

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

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

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.

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

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 20Rnd1 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

Ing.Gladys Marlene López Ing.Diosa S. Pérez

Ing. Mery Luz Pérez 1402/04/15

CódigoOption 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

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

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 = TrueEnd Sub

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

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

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

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

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-2Rnd 01

-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