Forum

Αναζήτηση στο ms-office.gr

Πάμε!
ms-office.gr > Forum > Microsoft Access > Access samples - Χρήσιμα αρχεία & παραδείγματα > Δημιουργία μοναδικών τυχαίων αριθμών

Access samples - Χρήσιμα αρχεία & παραδείγματα Αρχεία Ms-Access διαθέσιμα για τα μέλη του Forum.

Απάντηση στο θέμα

 

Εργαλεία Θεμάτων Τρόποι εμφάνισης
  #1  
Παλιά 20-10-13, 17:22
Όνομα: Γιώργος
Έκδοση λογισμικού Office: Ms-Office 2010
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 18-06-2010
Μηνύματα: 3.306
Προεπιλογή Δημιουργία μοναδικών τυχαίων αριθμών

Δημιουργός: Γιώργος Καπετανόπουλος (Οκτώβριος 2013)
Περιβάλλον: access 2003, 2007, 2010

Στην επισυναπτόμενη ΒΔ παρουσιάζονται 3 μέθοδοι για την επίλυση του παρακάτω προβλήματος.

Ζητούνται Χ τυχαίοι ακέραιοι αριθμοί στο διάστημα [min, max].

Ένας τρόπος για την επίλυση του προβλήματος είναι:

1) Να δημιουργήσουμε όλους (max-min+1) τους ακέραιους, που υπάρχουν στο διάστημα [min, max].

2) Να τους κατατάξουμε σε τυχαία σειρά και να πάρουμε Χ συνεχόμενους αρχίζοντας, για ευκολία, από την πρώτη θέση ή από την τελευταία με αντίστροφη σειρά.

Και οι 3 μέθοδοι της ΒΔ βασίζονται στην παραπάνω λύση.

Μέθοδοι 1 και 3

Στις μεθόδους 1 και 3 δημιουργείται ένα array (nums()) με πλήθος στοιχείων max-min+1 και τιμές nums(j)=min-1+J, όπου j η θέση του στοιχείου.

Δηλαδή το array περιέχει με αύξουσα σειρά όλους τους ακέραιους στο διάστημα [min, max].

Στη συνέχεια οι τιμές του array αναδιατάσσονται τυχαία, οπότε το τελικό περιέχει όλους τους ακέραιους με τυχαία σειρά.

Μένει να αποθηκεύσουμε το array σ’ ένα πίνακα.

Στην αρχική υλοποίηση (φόρμα frmCreateRndTable3) οι τιμές του array αποθηκεύονται μία μία στον πίνακα RndTable3.

Όταν δοκίμασα τη μέθοδο, για μεγάλο πλήθος εγγραφών (>2.000), διαπίστωσα ότι είναι πολύ αργή.

Έτσι ανέπτυξα έναν άλλο τρόπο αποθήκευσης (φόρμα frmCreateRndTable1).

Με μια πρόταση Join συνενώνω όλα τα στοιχεία του array σ’ ένα string, το αποθηκεύω σ’ ένα αρχείο κειμένου και ακολούθως το εισάγω στον πίνακα RndTable1.

Η μέθοδος αυτή, ειδικά για πολλές εγγραφές (2.000), είναι εξαιρετικά γρήγορη.

Μέθοδος 2

Στη μέθοδο αυτή, για τη δημιουργία των τιμών: min, min+1, min+2, …, max, αντί για array χρησιμοποιείται ο βοηθητικός πίνακας tHLP.

Ο πίνακας tHLP περιέχει το πεδίο ID, που είναι αυτόματης αρίθμησης με αρχική τιμή min και προσαύξηση 1.

Για να γεμίσουμε γρήγορα τον πίνακα, με τις αναγκαίες εγγραφές (max-min+1), του προσθέτουμε αρχικά μία εγγραφή και στη συνέχεια, επαναληπτικά, προσθέτουμε τις εγγραφές του, σ’ αυτές που έχει.

Έτσι σε κάθε επανάληψη οι εγγραφές θα γίνουν 2, 4, 8, 16, 32, 64, 128, …, 2^n, όπου n το πλήθος των επαναλήψεων.

Ο πίνακας θα γεμίσει με λίγες επαναλήψεις (2^10=1.024, 2^20=1.048.576).

Μας μένει τώρα να αποθηκεύσουμε, με τυχαία σειρά, τις εγγραφές του tHLP στον πίνακα RndTable2.

Αυτό γίνεται με ένα ερώτημα προσάρτησης στο οποίο οι εγγραφές του tHLP, με τη βοήθεια της συνάρτησης Rnd(), εισάγονται τυχαία στον πίνακα RndTable2.

Στις φόρμες frmCreateRndTable1, frmCreateRndTable2 και frmCreateRndTable3 υλοποιούνται και μπορούν να δοκιμαστούν οι παραπάνω 3 μέθοδοι.

Από τις δοκιμές στον υπολογιστή μου προκύπτει:

1) Η μέθοδος 3 είναι αργή και δεν πρέπει να χρησιμοποιείται για πολλές εγγραφές (>2.000).

2) Οι μέθοδοι 1 και 2 είναι ταχύτατες με τη 2 να πλεονεκτεί λίγο για εγγραφές μέχρι 5.000.

3) Για πάνω από 5.000 εγγραφές η μέθοδος 1 είναι σημαντικά ταχύτερη.
Συνημμένα Αρχεία
Τύπος Αρχείου: mdb RandomValues.mdb (408,0 KB, 123 εμφανίσεις)
Απάντηση με παράθεση
Απάντηση στο θέμα

Εργαλεία Θεμάτων
Τρόποι εμφάνισης

Δικαιώματα - Επιλογές
Δε μπορείτε να δημοσιεύσετε νέα μηνύματα
Δε μπορείτε να δημοσιεύσετε απαντήσεις
Δεν μπορείτε να επισυνάψετε αρχεία
Δεν μπορείτε να επεξεργαστείτε τα μηνύματα σας

Ο κώδικας ΒΒ είναι σε λειτουργία
Τα Smilies είναι σε λειτουργία
Ο κώδικας [IMG] είναι σε λειτουργία
Ο κώδικας HTML είναι σε λειτουργία
Trackbacks are εκτός λειτουργίας
Pingbacks are εκτός λειτουργίας
Refbacks are εκτός λειτουργίας


Παρόμοια Θέματα

Θέμα Δημιουργός Forum Απαντήσεις Τελευταίο Μήνυμα
[Συναρτήσεις] Αυτόματη αρίθμηση μοναδικών ακέραιων αριθμων ΑΠΟΣΤΟΛΗΣΚ Excel - Ερωτήσεις / Απαντήσεις 3 15-10-16 13:37
[Γενικά] Δημιουργία τυχαίων και μοναδικών 4ψήφιων αριθμών Skakinen Excel - Ερωτήσεις / Απαντήσεις 3 05-05-15 15:09
Παραγωγή τυχαίων αριθμών και εκτύπωση pm4698 Access - Ερωτήσεις / Απαντήσεις 1 03-11-14 19:38
[ Φόρμες ] Δημιουργία τυχαίων αριθμών mgeorge Access - Ερωτήσεις / Απαντήσεις 6 13-10-13 23:30
Εκτύπωση τυχαίων Εγγραφών και αριθμών kon73 Access - Ερωτήσεις / Απαντήσεις 0 06-02-09 11:53


Η ώρα είναι 09:55.