Θέλετε να αναδείξετε τον νικητή ενός διαγωνισμού, να σηκώσετε έναν μαθητή στον πίνακα ή να λύσετε τη διαφωνία για το ποιος θα πετάξει τα σκουπίδια; Αυτό το δωρεάν διαδικτυακό εργαλείο κάνει μια δίκαιη τυχαία επιλογή από οποιαδήποτε λίστα επικολλήσετε. Τοποθετήστε τις εγγραφές σας στο πλαίσιο «Στοιχεία» — μία ανά γραμμή ή χωρισμένες με κόμμα — ορίστε πόσα αποτελέσματα θέλετε στο «Πλήθος» και πατήστε «Δημιουργία». Η λίστα χρειάζεται τουλάχιστον δύο εγγραφές και χωράει έως 1000 στοιχεία, με μέγιστο μήκος 200 χαρακτήρες το καθένα.
Κάθε κλήρωση πραγματοποιείται απευθείας στο πρόγραμμα περιήγησής σας, χρησιμοποιώντας το Web Crypto API (crypto.getRandomValues), το οποίο παρέχει κρυπτογραφικά ισχυρές τυχαίες τιμές αντλώντας από το λειτουργικό σας σύστημα. Η λίστα σας δεν αποστέλλεται ποτέ σε κάποιον διακομιστή, δεν καταγράφεται και δεν την βλέπουμε ποτέ — κάτι που έχει μεγαλύτερη σημασία εδώ σε σχέση με άλλες γεννήτριες, αφού συνήθως οι χρήστες επικολλούν πελατολόγια, απουσιολόγια ή ονόματα συναδέλφων. Το κουμπί «Φόρτωση από αρχείο» τηρεί ακριβώς την ίδια υπόσχεση: ο browser σας διαβάζει το αρχείο και γεμίζει το πλαίσιο τοπικά, χωρίς να μεταφορτώνεται τίποτα στο διαδίκτυο.
Οι επιλογές έχουν σχεδιαστεί για τις λίστες που έχουν πραγματικά οι χρήστες. Η ρύθμιση «Διαχωριστικό» βρίσκεται στο «Αυτόματα», το οποίο ξεχωρίζει τις αλλαγές γραμμής από τα κόμματα και αναγνωρίζει ποιο από τα δύο χρησιμοποιεί η δική σας λίστα, ώστε τα δεδομένα που αντιγράφετε από ένα λογιστικό φύλλο, ένα μήνυμα ή ένα έγγραφο να λειτουργούν χωρίς καμία μορφοποίηση από εσάς. Κλειδώστε το στο «Νέα γραμμή», στο «Κόμμα» ή στο «Κενό» όταν τα δεδομένα σας αναμειγνύουν διαφορετικές μορφές — σημειώνοντας ότι η επιλογή «Κενό» είναι πάντα σκόπιμη και ποτέ αυτόματη, επειδή εγγραφές όπως τα ονοματεπώνυμα περιέχουν κενά από μόνα τους και ο αυτόματος διαχωρισμός τους θα κατέστρεφε περισσότερες λίστες από όσες θα έφτιαχνε. Το πεδίο «Πλήθος» καθορίζει πόσες εγγραφές θα κληρωθούν, από 1 έως 100. Κληρώνετε τρεις νικητές ανάμεσα σε 200 συμμετέχοντες; Επικολλήστε τους, ορίστε το «Πλήθος» σε 3 και πατήστε «Δημιουργία». Δύο ρυθμίσεις έχουν εφαρμογή μόνο όταν το πλήθος είναι 2 ή περισσότερο και μέχρι τότε παραμένουν ανενεργές: ο διακόπτης «Χωρίς επαναλήψεις», ο οποίος καθορίζει αν η ίδια εγγραφή μπορεί να κληρωθεί δύο φορές, και η «Μορφή εξόδου», η οποία ορίζει πώς διαχωρίζονται οι επιλογές μεταξύ τους — «Ένα ανά γραμμή», «Διαχωρισμένα με κενό» ή «Διαχωρισμένα με κόμμα».
Μια σειρά κουμπιών μέσα στο πλαίσιο «Στοιχεία» αναλαμβάνει την επεξεργασία που αλλιώς θα κάνατε κάπου αλλού. Η «Φόρτωση από αρχείο» τραβάει μια λίστα κατευθείαν από ένα απλό αρχείο κειμένου ή CSV. Το «Ανακάτεμα» αλλάζει τη σειρά των εγγραφών μέσα στο πλαίσιο, η «Ταξινόμηση» τις βάζει σε αλφαβητική σειρά με τους αριθμούς σε φυσική ακολουθία, ενώ ένα δεύτερο κλικ την αντιστρέφει, και ο «Καθαρισμός» αδειάζει τελείως το πλαίσιο. Η επιλογή «Συμπληρώστε με δείγματα δεδομένων» εισάγει μια σύντομη ενδεικτική λίστα για να δοκιμάσετε το εργαλείο με ένα κλικ. Η επιλογή «Ανάπτυξη για να ταιριάζει με το περιεχόμενο» μεγαλώνει το πλαίσιο για να φανεί ολόκληρη μια μεγάλη λίστα και η «Σύμπτυξη στο προεπιλεγμένο μέγεθος» το επαναφέρει. Κάτω από το αποτέλεσμα, η «Αντιγραφή όλων» βάζει κάθε επιλογή στο πρόχειρο, η «Αποθήκευση σε αρχείο» τις αποθηκεύει στη συσκευή σας και το «Ιστορικό» κρατάει τις τελευταίες 10 κληρώσεις στον browser σας, κάνοντας ένα παλαιότερο αποτέλεσμα προσβάσιμο με ένα κλικ.
Πώς γίνεται στην πραγματικότητα η επιλογή; Όταν πατάτε «Δημιουργία», η σελίδα ζητάει από τον browser τυχαίες τιμές μέσω του crypto.getRandomValues και τις χρησιμοποιεί για να διαλέξει θέσεις στη λίστα σας, αντί να βασιστεί στην ψευδοτυχαία συνάρτηση Math.random() της JavaScript. Η μετατροπή μιας ακατέργαστης τιμής 32-bit σε θέση είναι το σημείο όπου οι αλγόριθμοι συχνά κάνουν λάθος χωρίς να γίνεται αντιληπτό: η διαίρεση modulo της τιμής με το μήκος της λίστας είναι η προφανής και ταυτόχρονα η μεροληπτική προσέγγιση. Ο λόγος είναι ότι, εκτός αν το μήκος διαιρεί ακριβώς το 2^32, οι εγγραφές στην αρχή της λίστας εμφανίζονται ελαφρώς συχνότερα από τις υπόλοιπες. Αυτό το ψεγάδι ονομάζεται modulo bias (μεροληψία υπολοίπου) και είναι απολύτως μετρήσιμο, όχι θεωρητικό. Αυτό το εργαλείο, αντίθετα, απορρίπτει οποιαδήποτε τιμή ξεπερνά το μεγαλύτερο ακριβές πολλαπλάσιο του μήκους της λίστας και κληρώνει ξανά — μια τεχνική γνωστή ως rejection sampling (δειγματοληψία με απόρριψη). Κοστίζει μερικές επιπλέον κληρώσεις στο παρασκήνιο, αλλά προσφέρει μια απόλυτα ακριβή εγγύηση αντί για κατά προσέγγιση. Η θέση στη λίστα δεν αλλάζει απολύτως τίποτα: η πρώτη και η τελευταία εγγραφή έχουν την ίδια ακριβώς πιθανότητα σε κάθε κλήρωση.
Ο διακόπτης «Χωρίς επαναλήψεις» διαχωρίζει δύο εντελώς διαφορετικά είδη κλήρωσης, τα οποία έχουν ξεχωριστά ονόματα στη στατιστική. Όταν είναι ενεργοποιημένος, το εργαλείο ανακατεύει ένα αντίγραφο της λίστας σας μέσω του αλγορίθμου Fisher-Yates και τραβάει τις εγγραφές από την κορυφή — ακριβώς όπως τραβάμε κλήρους από ένα καπέλο χωρίς να τους βάζουμε πίσω, οπότε κανείς δεν κληρώνεται δύο φορές και κάθε ομάδα αυτού του μεγέθους είναι εξίσου πιθανή. Αυτό ονομάζεται δειγματοληψία χωρίς επαναφορά (sampling without replacement) και είναι αυτό ακριβώς που χρειάζεστε για νικητές δώρων, σχηματισμό ομάδων και σειρά προτεραιότητας. Όταν είναι απενεργοποιημένος, η κάθε επιλογή γίνεται ανεξάρτητα από ολόκληρη τη λίστα, άρα η ίδια εγγραφή μπορεί να εμφανιστεί περισσότερες από μία φορές — αυτό είναι η δειγματοληψία με επαναφορά (sampling with replacement), η οποία χρειάζεται όταν όλοι παραμένουν υποψήφιοι σε κάθε γύρο, όπως σε απανωτές κληρώσεις ή σε ένα γρήγορο στατιστικό δείγμα. Κανένας από τους δύο τρόπους δεν είναι πιο δίκαιος από τον άλλον· απλώς απαντούν σε διαφορετικές ανάγκες.
Μια δίκαιη κλήρωση δεν υποτίθεται ότι δείχνει δίκαιη. Κληρώστε πέντε ονόματα από τα δέκα και θα δείτε συχνά δύο επιλογές που ήταν δίπλα-δίπλα στην αρχική λίστα, ή το ίδιο όνομα δύο φορές στη σειρά εφόσον επιτρέπονται οι επαναλήψεις — και καθεμία από αυτές τις περιπτώσεις είναι εντελώς φυσιολογική. Η κάθε κλήρωση είναι ανεξάρτητη: οι προηγούμενες επιλογές δεν έχουν καμία απολύτως επιρροή στις επόμενες, και κανένα στοιχείο δεν έρχεται η «σειρά» του να κερδίσει απλώς επειδή πέρασε ώρα. Το ένστικτο που επιμένει για το αντίθετο είναι η πλάνη του τζογαδόρου (gambler's fallacy) και είναι το ίδιο ένστικτο που μας κάνει κακούς στο να επιλέγουμε εμείς οι ίδιοι τυχαία — όταν μας ζητούν να διαλέξουμε στην τύχη, αποφεύγουμε την πρώτη και την τελευταία εγγραφή, προσπαθούμε να μην επαναλάβουμε όνομα και κατανέμουμε τις επιλογές μας πολύ πιο ομοιόμορφα από ό,τι η πραγματική τύχη. Ένα αποτέλεσμα που φαίνεται ύποπτα τακτοποιημένο είναι το αποτύπωμα του ανθρώπου· η πραγματική τυχαιότητα δημιουργεί συσσωρεύσεις.
Γιατί να επιλέξετε αυτό το εργαλείο τυχαίας επιλογής;
- Κλήρωση αποκλειστικά στον browser: η λίστα σας διαβάζεται στη συσκευή σας και δεν στέλνεται πουθενά
- Τυχαιότητα μέσω Web Crypto API: κρυπτογραφική ασφάλεια αντί για το Math.random()
- Χωρίς modulo bias: το rejection sampling διατηρεί ίσες πιθανότητες για κάθε εγγραφή
- Κάθε μορφή λίστας: ένα ανά γραμμή, με κόμμα ή με κενό, χωρίς να χρειάζεται διαμόρφωση
- Λειτουργία «Χωρίς επαναλήψεις»: βρείτε νικητές ή ομάδες χωρίς να επιλεγεί κανείς δύο φορές
- Έως 1000 εγγραφές, και έως 100 επιλογές σε μία μόνο κλήρωση
- Ενσωματωμένα εργαλεία: αρχείο, ανακάτεμα, ταξινόμηση, καθαρισμός, δοκιμαστικά δεδομένα
- Ιστορικό και αποθήκευση: κρατήστε αρχείο μιας κλήρωσης που ίσως χρειαστεί να δικαιολογήσετε
- Απεριόριστο και δωρεάν: χωρίς εγγραφή, χωρίς όρια χρήσης, τίποτα στους διακομιστές μας
Η τυχαία επιλογή εμφανίζεται παντού όπου μια απόφαση πρέπει να αντέξει την αμφισβήτηση. Οι εκπαιδευτικοί εξετάζουν μαθητές χωρίς να δείχνουν εύνοια και χωρίζουν την τάξη σε ομάδες για εργασίες. Streamers και marketers κληρώνουν νικητές διαγωνισμών μπροστά σε κοινό που πρέπει να πιστέψει στο αποτέλεσμα. Οι μάνατζερ μοιράζουν τις αγγαρείες για τις οποίες κανείς δεν προσφέρεται, και οι ομάδες αποφασίζουν τη σειρά των παρουσιάσεων. Οι ερευνητές αντλούν ένα τυχαίο δείγμα αρχείων για έλεγχο. Οι παρέες λύνουν τη διαφωνία για το ποια ταινία θα δουν, και αποφασίζουν σε ποια ταβέρνα θα πάνε. Το κοινό στοιχείο είναι μια επιλογή που ο καθένας μπορεί να εξηγήσει εκ των υστέρων: η κλήρωση χρησιμοποιεί κρυπτογραφική τυχαιότητα, γίνεται εξ ολοκλήρου στη συσκευή σας και το «Ιστορικό» διατηρεί το αποτέλεσμα αν κάποιος ρωτήσει γι' αυτό αργότερα.
Αυτό το εργαλείο έχει μερικούς ειλικρινείς περιορισμούς που αξίζει να γνωρίζετε. Δεν μπορεί να κληρώσει περισσότερες μοναδικές εγγραφές από όσες περιέχει η λίστα σας — τρεις νικητές χρειάζονται τουλάχιστον τρία ονόματα — και σταματά στα 1000 στοιχεία των 200 χαρακτήρων το καθένα, με έως 100 επιλογές ανά κλήρωση. Το «Ανακάτεμα» και η «Ταξινόμηση» λειτουργούν ανά γραμμή, επομένως μια λίστα χωρισμένη με κόμματα σε μία μόνο γραμμή θα αναδιαταχθεί μόνο αν χωριστεί σε ένα στοιχείο ανά γραμμή. Και τα δύο αλλάζουν τη διάταξη μέσα στο πλαίσιο και όχι την ίδια την κλήρωση, η οποία είναι εξίσου δίκαιη όποια κι αν είναι η σειρά των εγγραφών. Κάθε εγγραφή φέρει επίσης ακριβώς το ίδιο βάρος από τη σχεδίαση, οπότε μια κλήρωση όπου ένα όνομα πρέπει να μετράει διπλό απαιτεί να γραφτεί το όνομα αυτό δύο φορές. Μέσα σε αυτά τα όρια η εγγύηση είναι ισχυρή — κάθε εγγραφή στη λίστα σας έχει ακριβώς την ίδια πιθανότητα, σε κάθε μεμονωμένη κλήρωση.