Reordernar array de strings aleatoriamente (Ayuda)

Iniciado por katanaia, 25 Noviembre 2008, 18:11 PM

0 Miembros y 1 Visitante están viendo este tema.

katanaia

Necesito una funcion para reordenar o mezclar al azar un array de strings.

O sea, que de un array con los elementos ordenados: "paco", "42", "35", "gato"
luego de pasarle la funcion pueda quedar algo como: "35", "paco", "gato", "42"

Alguien me puede ayudar?

Jedaias

#1
Se me ocurre algo como esto:

Variables Globales
Código (vb) [Seleccionar]

Dim cadena1(3) as string
Dim cadena2(3) as string


Declaracion de la cadena1
Código (vb) [Seleccionar]

cadena1(0) = "paco"
cadena1(1) = "42"
cadena1(2) = "35"
cadena1(3) = "gato"


Procedimiento que reordena aleatoriamente la cadena1 y la guarda en cadena2
Código (vb) [Seleccionar]

Dim Bandera As Boolean
Dim vNum As Integer

Randomize

cadena2(0) = ""
cadena2(1) = ""
cadena2(2) = ""
cadena2(3) = ""

For x = 0 To 3
    Bandera = True
    Do While Bandera
        vNum = Int(Rnd * 4)
        If cadena2(vNum) = "" Then
            cadena2(vNum) = cadena1(x)
            Bandera = False
        End If
    Loop
Next

cobein

Option Explicit

Private Sub Form_Load()
    Dim i As Long
    Dim svData() As String
   
    ReDim svData(25)
    For i = 0 To UBound(svData)
        svData(i) = i
    Next
   
    MixUp svData
   
    For i = 0 To UBound(svData)
        Debug.Print svData(i)
    Next
End Sub

Private Sub MixUp(svData() As String)
    Dim sTemp As String
    Dim lIndex As Long
    Dim lIndex1 As Long
    Dim i As Long
   
    Randomize Timer
    For i = 0 To UBound(svData) * 5
        lIndex = Rnd * UBound(svData)
        lIndex1 = Rnd * UBound(svData)
        sTemp = svData(lIndex): svData(lIndex) = svData(lIndex1): svData(lIndex1) = sTemp
    Next
End Sub

http://www.advancevb.com.ar
Más Argentino que el morcipan
Aguante el Uvita tinto, Tigre, Ford y seba123neo
Karcrack es un capo.