Ver Mensaje Individual
  #5 (permalink)  
Antiguo 06/09/2008, 04:32
Avellaneda
Colaborador
 
Fecha de Ingreso: enero-2008
Ubicación: Unas veces aquí, otras veces allí
Mensajes: 1.482
Antigüedad: 16 años, 3 meses
Puntos: 37
Respuesta: Consulta sobre numeros aleatorios

Cita:
Iniciado por dr--dre Ver Mensaje
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