Access samples - Χρήσιμα αρχεία & παραδείγματα Αρχεία Ms-Access διαθέσιμα για τα μέλη του Forum. |
| Εργαλεία Θεμάτων | Τρόποι εμφάνισης |
#1
| |||
| |||
Δημιουργία μοναδικών τυχαίων αριθμών
Δημιουργός: Γιώργος Καπετανόπουλος (Οκτώβριος 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 είναι σημαντικά ταχύτερη. |
« Προηγούμενο Θέμα
|
Επόμενο Θέμα »
| |
Παρόμοια Θέματα | ||||
Θέμα | Δημιουργός | Forum | Απαντήσεις | Τελευταίο Μήνυμα |
[Συναρτήσεις] Αυτόματη αρίθμηση μοναδικών ακέραιων αριθμων | ΑΠΟΣΤΟΛΗΣΚ | Excel - Ερωτήσεις / Απαντήσεις | 3 | 15-10-16 14:37 |
[Γενικά] Δημιουργία τυχαίων και μοναδικών 4ψήφιων αριθμών | Skakinen | Excel - Ερωτήσεις / Απαντήσεις | 3 | 05-05-15 16:09 |
Παραγωγή τυχαίων αριθμών και εκτύπωση | pm4698 | Access - Ερωτήσεις / Απαντήσεις | 1 | 03-11-14 20:38 |
[ Φόρμες ] Δημιουργία τυχαίων αριθμών | mgeorge | Access - Ερωτήσεις / Απαντήσεις | 6 | 14-10-13 00:30 |
Εκτύπωση τυχαίων Εγγραφών και αριθμών | kon73 | Access - Ερωτήσεις / Απαντήσεις | 0 | 06-02-09 12:53 |
Η ώρα είναι 19:46.