
06/09/2008, 04:32
|
Colaborador | | Fecha de Ingreso: enero-2008 Ubicación: Unas veces aquí, otras veces allí
Mensajes: 1.482
Antigüedad: 17 años, 3 meses Puntos: 37 | |
Respuesta: Consulta sobre numeros aleatorios Cita:
Iniciado por dr--dre el 2005, que creo que es la Version 8, no estoy seguro.
ha perso uso el Visual Basic Express Edition
me parece buena idea la segunda, va mas con este ejercicio,
gracias Hola, prueba con esta función (la pongo bien comentada para que no tengas dudas):
Código:
Public Function Aleatorios(ByVal iNum As Integer, ByVal iInf As Integer, ByVal iSup As Integer) As Integer()
Dim a() As Integer, i As Integer, j As Integer, x As Integer
ReDim a(iNum - 1) ' redimensionamos la matriz (el subíndice es cero)
Randomize()
For i = 0 To iNum - 1
inicio:
' generamos un número aleatorio entre los valores indicados
x = Int((iSup - iInf + 1) * Rnd + iInf)
For j = 0 To i
' si el número ya existe en el array, lo descartamos
If x = a(j) Then GoTo inicio
Next j
' no existe, lo añadimos a la matriz
a(i) = x
Next i
' ordenamos el array (recuperamos las variables anteriores para no asignar nuevas)
' Nota: Si no los necesitas ordenados, suprime el siguiente bucle
x = 1
While (x = 1)
x = 0
For i = 1 To UBound(a)
If a(i - 1) > a(i) Then
j = a(i - 1)
a(i - 1) = a(i)
a(i) = j
x = 1
End If
Next i
End While
' devolvemos la matriz generada
Return a
End Function
Para llamarla, p.e. desde un Button:
Código:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
' parámetros: Cantidad de números, primer número, último número
' en este caso: 10 números alatorios sin repetición entre el 10 y el 30
Dim miArray() As Integer = Aleatorios(10, 10, 30)
' los mostramos en un control ListBox (para comprobación)
Dim i As Integer = 0
ListBox1.Items.Clear()
For i = 0 To UBound(miArray)
ListBox1.Items.Add(miArray(i))
Next i
End Sub
|