Από πού να ξεκινήσετε
Διαβάστε τι είναι μια γεννήτρια τυχαίων αριθμών: γεννήτριες υλικού, ψευδοτυχαίες και κρυπτογραφικά ασφαλείς γεννήτριες, γιατί οι αριθμοί επαναλαμβάνονται και τι προσφέρει το πρόγραμμα περιήγησης. Όταν χρειάζεστε αριθμούς αντί για εξηγήσεις, η γεννήτρια τυχαίων αριθμών τούς παράγει στο πρόγραμμα περιήγησής σας σε οποιοδήποτε εύρος, με ή χωρίς επαναλήψεις.
Πού κάνουν αθόρυβα λάθος οι γεννήτριες
Μια ισχυρή πηγή τυχαιότητας είναι μόνο η μισή δουλειά. Η άλλη μισή είναι η αντιστοίχιση των ακατέργαστων τιμών της στο επιθυμητό εύρος, και εκεί αποτυγχάνουν πολλές αυτοσχέδιες γεννήτριες. Ο υπολογισμός του υπολοίπου από τη διαίρεση της τιμής με το μέγεθος του εύρους αποτελεί την προφανή προσέγγιση, αλλά εισάγει μια ανεπαίσθητη ανισότητα: εκτός αν το μέγεθος του εύρους διαιρεί ακριβώς το διάστημα των τιμών της πηγής, οι χαμηλότεροι αριθμοί εμφανίζονται λίγο συχνότερα από τους υπόλοιπους. Αυτό το σφάλμα ονομάζεται μεροληψία υπολοίπου (modulo bias). Μία λύση είναι η δειγματοληψία απόρριψης (rejection sampling): απορρίπτονται οι τιμές που πέφτουν στην άνιση «ουρά» και η κλήρωση επαναλαμβάνεται. Η δική μας γεννήτρια εφαρμόζει ακριβώς αυτό, ώστε κάθε αριθμός στο εύρος σας να έχει την ίδια ακριβώς πιθανότητα σε κάθε κλήρωση.
Η ίδια λογική αποκλείει και τις εύκολες λύσεις στις οποίες καταφεύγει κανείς πρώτα. Η συνάρτηση Math.random() δεν εγγυάται καμία ασφάλεια, και οι συναρτήσεις υπολογιστικών φύλλων όπως οι RAND() και RANDBETWEEN() ανήκουν στην ίδια κατηγορία: είναι καλές για ένα πρόχειρο ανακάτεμα, αλλά ακατάλληλες για οτιδήποτε θα μπορούσε κάποιος να αμφισβητήσει.
Αριθμοί, λίστες και ζάρια
Μια γεννήτρια τυχαίων αριθμών επιστρέφει αριθμούς από ένα εύρος που ορίζετε εσείς. Το εργαλείο τυχαία επιλογή από λίστα λειτουργεί πάνω σε μια λίστα που εισάγετε — ονόματα, συμμετοχές, επιλογές — ώστε να μην χρειάζεται να αντιστοιχίζετε χειροκίνητα αριθμούς σε γραμμές. Για επιτραπέζια παιχνίδια, η ρίψη ζαριών ρίχνει τα ζάρια και αθροίζει τα αποτελέσματα, ενώ για την επιλογή μεταξύ δύο περιπτώσεων αρκεί η ρίψη νομίσματος. Όταν η τυχαιότητα πρέπει να προστατεύσει κάτι αντί απλώς να κρίνει μια επιλογή, χρησιμοποιήστε τη γεννήτρια ισχυρών κωδικών πρόσβασης. Όλα αυτά τα εργαλεία αντλούν από την ίδια κρυπτογραφικά ασφαλή πηγή στο πρόγραμμα περιήγησής σας.