Εμφάνιση ενός μόνο μηνύματος
  #5  
Παλιά 05-03-10, 02:31
Το avatar του χρήστη nisgia
nisgia Ο χρήστης nisgia δεν είναι συνδεδεμένος
Super Moderator
Όνομα: Γιάννης
Έκδοση λογισμικού Office: Ms-Office 2007
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 12-10-2009
Περιοχή: Ηγουμενίτσα
Μηνύματα: 161
Προεπιλογή

Με την ευκαιρία να δώσω και εγώ δυο χρήσιμες ίσως συναρτήσεις.

Η πρώτη (RandomRank) μας επιστρέφει έναν πίνακα ακεραίων σε τυχαία κατάταξη
ενώ η δεύτερη (ScrambledArray) μας επιστρέφει "ανακατεμένο" τον πίνακα που της περνάμε δια αναφοράς ως παράμετρο.
Με τα ορίσματα της RandomRank καθορίζουμε το εύρος των τιμών που θέλουμε να μας επιστρέψει.

Κώδικας:
Function RandomRank(ByVal lngMax As Long, _
        Optional ByVal lngMin As Long = 1) As Long()
    'Δημιουργία πίνακα με τυχαία κατάταξη
    Dim alngArray() As Long
    Dim lngPos As Long
    Dim lngTemp As Long
    Dim i As Long

    ReDim alngArray(lngMin To lngMax)
    For i = lngMin To lngMax
        alngArray(i) = i
    Next i

    For i = lngMax To (lngMin + 1) Step -1
        lngPos = Int((i - lngMin + 1) * Rnd + lngMin)
        lngTemp = alngArray(lngPos)
        alngArray(lngPos) = alngArray(i)
        alngArray(i) = lngTemp
    Next i
    RandomRank = alngArray()
End Function

Function ScrambledArray(varArray As Variant) As Boolean
    'Τυχαίο ανακάτεμα του πίνακα varArray 
    Dim i As Long
    Dim lngUB As Long
    Dim lngLB As Long
    Dim lngPos As Long
    Dim varTemp As Variant
    
    If IsArray(varArray) Then
        lngUB = UBound(varArray)
        lngLB = LBound(varArray)
        For i = lngUB To lngLB + 1 Step -1
            lngPos = Int((i - lngLB + 1) * Rnd + lngLB)
            varTemp = varArray(lngPos)
            varArray(lngPos) = varArray(i)
            varArray(i) = varTemp
        Next i
        ScrambledArray = lngUB > lngLB
    End If
End Function
__________________
Αν δεν το ρωτούσες, δεν θα το μαθαίναμε ποτέ...!
-----------------------------------------------
Τελικά η γνώση, αντίθετα με ό,τι μέχρι σήμερα πίστευα, είναι η φυλακή της σκέψης.
Όταν η αφετηρία είναι η ελεύθερη σκέψη, δεν χρειάζεται πλέον να φτάσεις πουθενά!
Απάντηση με παράθεση