Εμφάνιση ενός μόνο μηνύματος
  #21  
Παλιά 08-07-10, 19:12
schizo Ο χρήστης schizo δεν είναι συνδεδεμένος
Όνομα: Μάριος
Έκδοση λογισμικού Office: Ms-Office 2010
Γλώσσα λογισμικού Office: Αγγλική
 
Εγγραφή: 07-07-2009
Μηνύματα: 18
Προεπιλογή

Γιώργο (mistirios),
Είδα την επισήμανσή σου και... στενοχωρήθηκα. Ξανακοίταξα λοιπόν τον κώδικά μου, και βεβαιώθηκα ότι αλγοριθμικά είναι σωστός. Το πρόβλημα που αναφέρεις οφείλεται στο ότι το άθροισμα των ποσοστών του πίνακα από τον οποίο παίρνω τα ονόματα δεν κάνει 100%.
Ανεβάζω λοιπόν ξανά τη λύση που είχα δώσει, με πίνακα που τα ποσοστά εμφάνισης των ονομάτων αθροίζονται στο 100%, ελαφρώς βελτιωμένη και με αρκετά χαρακτηριστικά (που έφτιαξα για να ελέγξω την ορθότητα του αποτελέσματος). Θα δεις τώρα ότι σε μεγάλα δείγματα (π.χ. 1000), τα ονόματα αναπαράγονται με σωστές συχνότητες.
Μάλλον είναι λοιπόν ώρα να εξηγήσω το πως δουλεύει η κατανομή. Έχουμε και λέμε:
Σε κάθε όνομα αντιστοιχεί ένα ποσοστό εμφάνισης στον πληθυσμό, δηλαδή ένας πραγματικός αριθμός από το 0 μέχρι το 1 (π.χ. ποσοστό 0,12 = 12%).
Ο κώδικας λοιπόν:
1) επιλέγει τυχαία μια εγγραφή
2) παράγει έναν τυχαίο αριθμό από το 0 μέχρι το 1 -με την rnd- (π.χ. τυχαίος αριθμός 0,05)
3) συγκρίνει το ποσοστό εμφάνισης της επιλεγμένης εγγραφής με τον τυχαίο αριθμό και...
4) αν το ποσοστό αυτό είναι μεγαλύτερο από τον τυχαίο αριθμό, τότε προσθέτει την εγγραφή, αλλιώς ξαναπάει στο βήμα 1
Η διαδικασία επαναλαμβάνεται μέχρι να συγκεντρωθρί ο απαιτούμενος αριθμός εγγραφών.
Το παραπάνω (πιστεύω) βγάζει σωστά αποτελέσματα εξ' αιτίας του βήματος 3. Όσο δηλαδή πιο μεγάλο είναι ένα ποσοστό, τόσο περισσότερες πιθανότητες έχει να είναι μεγαλύτερο από έναν τυχαίο αριθμό, άρα και να προστεθεί στο νέο πίνακα.

Γιώργο (kapetang),
Το σκεπτικό σου για την κατανομή, νομίζω πως είναι ολόσωστο. Όπως είπες όμως κι εσύ, χρειάζεται να δημιουργήσει, έστω και προσωρινά, μια τεράστια λίστα για να επιλέξει εγγραφές μέσα από αυτή.
Επίσης, έχεις δίκιο για τη λίστα με τα ονόματα. Παρατήρησα κι εγώ τις διπλοεγγραφές. Είδα ακόμα κάποια μικρολαθάκια (π.χ. κάποια ονόματα όπως το "Άδωνις" δεν είχαν τόνο, 1-2 είχαν καταχωρηθεί σε λάθος φύλο κλπ). Την ανεβάζω ξανά με τις διορθώσεις (μπορεί βέβαια να έχει και άλλα λάθη). Όπως και να 'χει πάντως, η λίστα είναι εξαιρετική. Γιώργο (mistirios), -υποθέτω και εκ μέρους πολλών άλλων- ευχαριστούμε.

ΥΓ. Όταν προσπαθώ να δημιουργήσω πίνακα ονομάτων με πάρα πολλές εγγραφές (π.χ. 10.000), το progress bar που έχω φτιάξει, μπορεί να κολλήσει (στο repaint που κάνει). Έχει κανείς καμμιά ιδέα γιατί συμβαίνει αυτό, αν και πώς μπορώ να το αποφύγω;
Συνημμένα Αρχεία
Τύπος Αρχείου: zip greeknames.zip (34,0 KB, 8 εμφανίσεις)
Τύπος Αρχείου: zip RandomNames.zip (21,2 KB, 4 εμφανίσεις)
Απάντηση με παράθεση