Τυχαία κατανομή: τυχαία επιλογή και κατάλογος κατανομής (allocation list)
Εν συντομία
Η κάρτα τραβά απλή τυχαία δειγματοληψία από μια λίστα (αριθμοί από 1 έως N ή επικολλημένη λίστα με ένα αναγνωριστικό ανά γραμμή) ή μοιράζει άτομα σε ομάδες: με τυχαιοποίηση με μπλοκ (λόγος των ομάδων, διάφορα μεγέθη μπλοκ, προαιρετικά χωριστά ανά στρώμα) ή με σταθερά μεγέθη ομάδων. Κάθε λίστα μπορεί να αποθηκευτεί ως CSV ή να αντιγραφεί.
Εργαλείο διδασκαλίας, όχι τυχαιοποίηση πραγματικής μελέτης
Το seed είναι ορατό. Όποιος το γνωρίζει μαζί με τη μέθοδο μπορεί να υπολογίσει εκ των προτέρων ολόκληρη τη λίστα· δεν υπάρχει απόκρυψη της κατανομής ούτε πρωτόκολλο. Μια πραγματική μελέτη χρειάζεται ένα εγκεκριμένο σύστημα, ένα ανεξάρτητο άτομο και το πρωτόκολλο του ιδρύματος. Γι' αυτό κάθε εξαγόμενο αρχείο αρχίζει με τη γραμμή «Εργαλείο διδασκαλίας - όχι για πραγματικές μελέτες (χωρίς απόκρυψη)», το seed και τη μέθοδο.
Seed
Η προεπιλογή είναι 20261008. Το ίδιο seed και οι ίδιες εισαγωγές δίνουν την ίδια λίστα· ένα άλλο seed δίνει άλλη. Το seed δεν προέρχεται ποτέ από το ρολόι. Με στρώματα κάθε στρώμα έχει τη δική του ροή (αριθμός του στρώματος από το 1): η λίστα ενός στρώματος δεν αλλάζει όταν ένα άλλο στρώμα μεγαλώνει.
Μπλοκ
- Ένα μπλοκ περιέχει κάθε ομάδα τόσες φορές όσες απαιτεί ο λόγος (με 1:1 και μέγεθος μπλοκ 4, δύο φορές η καθεμία), με τυχαία σειρά. Μετά από κάθε πλήρες μπλοκ οι ομάδες είναι ακριβώς ισορροπημένες· ενδιάμεσα διαφέρουν το πολύ κατά το μισό του μεγέθους του μπλοκ.
- Όποιος γνωρίζει το μέγεθος του μπλοκ μπορεί να μαντέψει την τελευταία περίπτωση κάθε μπλοκ. Γι' αυτό αναμειγνύονται διάφορα μεγέθη μπλοκ· οι αριθμοί των μπλοκ στον πίνακα δείχνουν πού τελειώνει ένα μπλοκ.
- Το τελευταίο μπλοκ μπορεί να μείνει ελλιπές· οι ομάδες δεν είναι τότε ακριβώς ίσες στο τέλος. Με το «Να μείνει πλήρες το τελευταίο μπλοκ» η λίστα γίνεται μακρύτερη από τον αριθμό των θέσεων.
- Πολλά μικρά στρώματα έχουν πολλά ελλιπή μπλοκ.
Κρυφή λειτουργία: άτομο προς άτομο
- Ολόκληρη η λίστα δημιουργείται κατά την εκκίνηση από την τυχαιότητα του προγράμματος περιήγησης (όχι από αρχική τιμή) και δεν εμφανίζεται. Κάθε άτομο παίρνει την ομάδα του μόνο όταν καταχωρηθεί το αναγνωριστικό του· αυτό δεν αναιρείται και κάθε αναγνωριστικό μετράει μόνο μία φορά.
- Το αποτύπωμα (SHA-256 από ένα salt και τη λίστα) δεσμεύει τη λίστα. Ανήκει στο πρωτόκολλο της μελέτης πριν από την πρώτη ένταξη. Στο τέλος η λίστα αποκαλύπτεται μαζί με το salt· όποιος ξαναϋπολογίσει το αποτύπωμα, βλέπει ότι τίποτα δεν άλλαξε εκ των υστέρων.
- Όριο: η λίστα είναι κρυφή μόνο από ένα βλέμμα στην οθόνη. Όποιος ανοίξει τα εργαλεία προγραμματιστή του προγράμματος περιήγησης μπορεί να τη διαβάσει, και όποιος διαγράψει τον αποθηκευτικό χώρο του προγράμματος περιήγησης χάνει την εκτέλεση. Γι' αυτό το πρωτόκολλο πρέπει να αποθηκεύεται κατά την ένταξη. Μια πραγματική μελέτη χρειάζεται εγκεκριμένο σύστημα, στο οποίο το άτομο που κάνει την ένταξη δεν βλέπει ποτέ τη λίστα.
Επιλογή από μια λίστα
Τα αναγνωριστικά μόνο εμφανίζονται και δεν εισάγονται ποτέ σε εντολή· η λίστα μένει στο πρόγραμμα περιήγησης. Τα διπλά αναγνωριστικά δεν αφαιρούνται (αλλιώς ένα άτομο θα είχε διπλή πιθανότητα) αλλά αναφέρονται· οι κενές γραμμές παραλείπονται. Όρια: το πολύ ένα εκατομμύριο γραμμές με το πολύ 200 χαρακτήρες η καθεμία. Μια επιλογή διαλέγει άτομα, μια κατανομή τα μοιράζει σε ομάδες· πρόκειται για δύο διαφορετικά βήματα.
Για ειδικούς
Γεννήτρια mulberry32 (32 bit) με αναμεμειγμένες υποροές από (seed, αριθμός). Ανακάτεμα κατά Fisher-Yates· η επιλογή ανταλλάσσει μόνο k θέσεις, οπότε ένα εκατομμύριο γραμμές δεν κοστίζουν σχεδόν τίποτα. Οι μέθοδοι είναι ορισμένες, όχι «σωστές» σε σύγκριση με ένα πρότυπο: μια άλλη γεννήτρια θα έδινε άλλες λίστες. Οι ιδιότητες ελέγχονται (κάθε πλήρες μπλοκ ισορροπημένο, διαφορά το πολύ το μισό του μεγέθους του μπλοκ, ίση συχνότητα εγκλεισμού, ίση συχνότητα των έξι διατάξεων ενός μπλοκ 1:1 μεγέθους 4 για σταθερά seed) όπως και λίστες που παρήχθησαν στο script με αναδημιουργία της γεννήτριας στην R.