1. UNIVERSIDAD GRAN MARISCAL DE AYACUCHO
FACULTAD DE INGENIERIA
NÚCLEO: BARCELONA
ESCUELA DE SISTEMAS E INFORMATICA
ASIGNATURA: SIMULACIÓN
Programas ejemplos para generar
números aleatorios
Estos programas se pueden realizar el Visual Basic y adaptarlo a visual C++.
1.- GENERAR NÚMERO ALEATORIO
Este es un simple ejemplo para generar
números aleatorios en Visual basic
usando la función Randomize y Rnd
A la función " Aleatorio ", se le debe
enviar en el primer parámetro el valor
Mínimo y en el segundo el valor máximo
del rango para generar el número
aleatorio.
Colocar un CommandButton, y dos textbox ( text1 para el minimo y text2 para el
máximo )
CÓDIGO:
Option Explicit
'Función que devuelve el número aleatorio
''''''''''''''''''''''''''''''''''''''''''''''''''''''
Private Function Aleatorio(Minimo As Long, Maximo As Long) As Long
Randomize ' inicializar la semilla
Aleatorio = CLng((Minimo - Maximo) * Rnd + Maximo)
End Function
Private Sub Command1_Click()
If Len(Text1) <> 0 And Len(Text2) <> 0 Then
'generar un número
MsgBox Aleatorio(CLng(Text1), CLng(Text2)), vbInformation
End If
End Sub
Private Sub Form_Load()
Text1 = ""
Text2 = ""
End Sub
2. Private Sub Text1_KeyPress(KeyAscii As Integer)
If Not IsNumeric(Chr(KeyAscii)) And KeyAscii <> 8 Then
KeyAscii = 0
End If
End Sub
Private Sub Text2_KeyPress(KeyAscii As Integer)
If Not IsNumeric(Chr(KeyAscii)) And KeyAscii <> 8 Then
KeyAscii = 0
End If
End Sub
2.- COLOR ALEATORIO
Este ejemplo utiliza la misma función anterior ( con Randomize y Rnd ) para generar un
número aleatorio entre 0 y 15, y luego con dicho número obtener un color aleatorio que
se obtiene en este caso con la función QBColor de Visual basic.
Colocar un botón en el formulario
CÓDIGO:
Option Explicit
Private Function Aleatorio(Minimo As Long, Maximo As Long) As Long
Randomize
Aleatorio = CLng((Minimo - Maximo) * Rnd + Maximo)
End Function
Private Sub Command1_Click()
Me.BackColor = QBColor(Aleatorio(0, 15))
End Sub
Private Sub Form_Load()
Command1.Caption = "Generar color"
End Sub
3.- IMAGEN ALEATORIA
Este ejemplo , carga en un array, varios gráficos. Luego se genera un número aleatorio
para usarlo como índice del array y obtener la imagen.
Colocar un botón y establecer las rutas de los gráficos en el evento Load
CÓDIGO:
Option Explicit
Private arr_Imagenes(1 To 5) As StdPicture
Private Function Aleatorio(Minimo As Long, Maximo As Long) As Long
Randomize
3. Aleatorio = CLng((Minimo - Maximo) * Rnd + Maximo)
End Function
' -- Botón para mostrar la imagen
Private Sub Command1_Click()
Static lIndex As Long
' -- Para no repetir el número ( índice del array para el gráfico )
While lIndex = 0 Or lIndex = Me.Tag
lIndex = Aleatorio(LBound(arr_Imagenes), UBound(arr_Imagenes))
Wend
Set Me.Picture = arr_Imagenes(lIndex)
Me.Tag = lIndex
End Sub
' -- Inicio
Private Sub Form_Load()
Me.Tag = 0
Command1.Caption = "Mostrar imagen"
' -- Cargar las los gráficos en cada elemento del array
Set arr_Imagenes(1) = LoadPicture("c:windowsplumas.bmp")
Set arr_Imagenes(2) = LoadPicture("c:windowsAzteca.bmp")
Set arr_Imagenes(3) = LoadPicture("c:windowsPompas.bmp")
Set arr_Imagenes(4) = LoadPicture("c:windowsRododendro.bmp")
Set arr_Imagenes(5) = LoadPicture("c:windowsViento.bmp")
End Sub
Private Sub Form_Unload(Cancel As Integer)
' -- Destruir Array para liberar recursos
Erase arr_Imagenes
End Sub
4.- DECIMALES ALEATORIOS
Esta sencilla rutina de código, añade a un listbox números decimales aleatorios
Colocar una caja de listado ( List1 )
CODIGO:
Option Explicit
Private Sub Form_Load()
' -- Variables
Dim i As Integer
Dim MaxNumber As Double
Dim MinNumber As Double
Dim Value As Double
' -- Definir Valores máximos y mínimos
MinNumber = 250.51
MaxNumber = 300.83
4. Randomize
' -- Crear números y añadir a la lista
For i = 0 To 100
' -- Generar el decimal aleatorio entre los dos valores ( máximo y mínimo )
Value = CDbl((MinNumber - MaxNumber) * Rnd + MaxNumber)
' -- Usar la función FormatNumber y Formatear el valor para que muestre solo dos decimales
List1.AddItem FormatNumber(Value, 2)
Next
End Sub