Γεννήτρια τυχαίων αριθμών

Παράγετε έναν τυχαίο αριθμό, μια λίστα ή πολλαπλά σύνολα αριθμών σε οποιοδήποτε εύρος — όλα παράγονται απευθείας στο πρόγραμμα περιήγησής σας με κρυπτογραφικά ασφαλή τυχαιότητα, ποτέ σε διακομιστή.

Πατήστε Δημιουργία για κλήρωση
Επιλογές

Χρειάζεστε έναν γρήγορο και δίκαιο τρόπο για να πάρετε έναν τυχαίο αριθμό; Αυτή η δωρεάν διαδικτυακή γεννήτρια τυχαίων αριθμών παράγει έναν αριθμό — ή μια ολόκληρη λίστα αριθμών — σε οποιοδήποτε εύρος επιλέξετε, από ένα απλό εύρος 1 έως 10 μέχρι εύρη που φτάνουν στα δισεκατομμύρια. Ορίστε την ελάχιστη και τη μέγιστη τιμή στα πεδία «Ελάχ» και «Μέγ», επιλέξτε πόσους αριθμούς χρειάζεστε στο πεδίο «Πλήθος» και πατήστε «Δημιουργία». Και τα δύο όρια περιλαμβάνονται, οπότε ένα εύρος από 1 έως 10 μπορεί να επιστρέψει τόσο το 1 όσο και το 10.

Κάθε αποτέλεσμα παράγεται απευθείας στο πρόγραμμα περιήγησής σας μέσω του Web Crypto API (crypto.getRandomValues) — που παρέχει κρυπτογραφικά ασφαλείς τυχαίες τιμές από την πηγή τυχαιότητας του λειτουργικού σας συστήματος. Τίποτα δεν αποστέλλεται σε διακομιστή, τίποτα δεν καταγράφεται, και εμείς δεν βλέπουμε ποτέ τους αριθμούς σας. Η παραγωγή είναι στιγμιαία, ιδιωτική, και συνεχίζει να λειτουργεί ακόμη και σε αργή σύνδεση μόλις φορτωθεί η σελίδα.

Οι επιλογές έχουν σχεδιαστεί για τις πραγματικές καταστάσεις όπου οι άνθρωποι χρειάζονται πράγματι τυχαίους αριθμούς. Ενεργοποιήστε το «Χωρίς επαναλήψεις» ώστε κανένας αριθμός να μην εμφανιστεί δύο φορές — η ρύθμιση που χρειάζεστε για λαχεία, κληρώσεις τύπου λοταρίας ή διαχωρισμό ανθρώπων σε ομάδες χωρίς επαναλήψεις. Χρειάζεστε είκοσι νικητές ανάμεσα σε 500 συμμετέχοντες; Ορίστε το «Ελάχ» στο 1 και το «Μέγ» στο 500, ενεργοποιήστε το «Χωρίς επαναλήψεις», ορίστε το «Πλήθος» στο 20 και πατήστε «Δημιουργία». Η «Σειρά ταξινόμησης» διατάσσει το αποτέλεσμα αύξουσα ή φθίνουσα, και ένα κουμπί αντιγράφει όλα τα αποτελέσματα ταυτόχρονα. Η εναλλαγή της «Μορφής εξόδου» από «Νέα γραμμή» σε «Διαχωρισμένα με κενό» ή «Διαχωρισμένα με κόμμα» αποκαλύπτει τον «Αριθμό συνόλων»: πολλές ανεξάρτητες κληρώσεις ταυτόχρονα — για παράδειγμα είκοσι σύνολα των 3 αριθμών για είκοσι γύρους λαχείου — ενώ το «Να επιτρέπονται διπλότυπα μεταξύ συνόλων» καθορίζει αν ο ίδιος αριθμός μπορεί να εμφανιστεί σε περισσότερα από ένα από αυτά.

Πώς παράγεται πραγματικά η τυχαιότητα; Το πρόγραμμα περιήγησής σας παρέχει κρυπτογραφικά ασφαλείς τυχαίες τιμές μέσω του Web Crypto API, και όχι μέσω ενός JavaScript PRNG όπως το Math.random(). Όταν πατάτε «Δημιουργία», η σελίδα ζητά τυχαίες τιμές με το crypto.getRandomValues και τις χρησιμοποιεί για να παράγει αριθμούς εντός του εύρους που επιλέξατε. Η βασική πηγή τυχαιότητας παρέχεται από το λειτουργικό σύστημα, και το πρόγραμμα περιήγησης έχει πρόσβαση σε αυτήν μέσω του Web Crypto API, οπότε η σελίδα δεν χρειάζεται να διατηρεί τη δική της αρχική τιμή (seed) ή ψευδοτυχαία ακολουθία.

Η αντιστοίχιση μιας ακατέργαστης τιμής στο εύρος σας είναι το σημείο όπου οι γεννήτριες σφάλλουν αθόρυβα, και αξίζει τη δική της παράγραφο. Η λήψη του υπολοίπου της διαίρεσης με το μέγεθος του εύρους είναι η προφανής προσέγγιση και η μεροληπτική: εκτός αν το εύρος διαιρείται ακριβώς στο 2^32, οι μικρότεροι αριθμοί εμφανίζονται ελαφρώς πιο συχνά από τους υπόλοιπους. Αυτό το σφάλμα ονομάζεται modulo bias, και είναι μετρήσιμο, όχι απλώς θεωρητικό. Αυτή η γεννήτρια αντ' αυτού απορρίπτει κάθε τιμή πέρα από το μεγαλύτερο ακριβές πολλαπλάσιο του εύρους και παράγει ξανά — μια τεχνική που ονομάζεται rejection sampling. Αυτό κοστίζει μερικές επιπλέον προσπάθειες, αλλά αντ' αυτού προσφέρει μια ακριβή εγγύηση: κάθε αριθμός ανάμεσα στο «Ελάχ» και το «Μέγ» έχει ακριβώς την ίδια πιθανότητα, όχι σχεδόν την ίδια.

Τι κάνει πραγματικά έναν αριθμό τυχαίο; Ένας αριθμός είναι αρκετά τυχαίος όταν τα προηγούμενα αποτελέσματα δεν αποκαλύπτουν τίποτα για το επόμενο — και στην πράξη υπάρχουν τρία επίπεδα αυτού. Μια συνηθισμένη ψευδοτυχαία συνάρτηση όπως το Math.random() εκτελεί έναν ντετερμινιστικό αλγόριθμο: όποιος μάθει την εσωτερική της κατάσταση μπορεί να αναπαράγει ολόκληρη την ακολουθία, κάτι που την κάνει κατάλληλη για ανακάτεμα μιας τράπουλας, αλλά ακατάλληλη για οτιδήποτε το αποτέλεσμα δεν πρέπει να είναι προβλέψιμο. Μια κρυπτογραφικά ασφαλής γεννήτρια (CSPRNG) — το επίπεδο που χρησιμοποιεί αυτό το εργαλείο — είναι επίσης αλγόριθμος, αλλά έχει σχεδιαστεί ώστε να παράγει απρόβλεπτες τιμές χρησιμοποιώντας μια ασφαλή πηγή τυχαιότητας του συστήματος, και είναι κατασκευασμένη έτσι ώστε η παρατήρηση της εξόδου της να μην αποκαλύπτει τίποτα για το τι ακολουθεί. Η φυσική τυχαιότητα, από πηγές όπως ο ατμοσφαιρικός θόρυβος ή η ραδιενεργός διάσπαση, βρίσκεται πάνω και από τα δύο επίπεδα, αν και η πρακτική διαφορά εξαφανίζεται όταν πρόκειται για την παραγωγή ενός αριθμού από ένα εύρος. Ακριβώς γι' αυτό τα προγράμματα περιήγησης εκθέτουν ένα ξεχωριστό κρυπτογραφικό API αντί απλώς να βελτιώνουν το Math.random(): τα δύο λύνουν διαφορετικά προβλήματα, και μόνο το ένα είναι ασφαλές όταν το αποτέλεσμα έχει σημασία για κάποιον.

Μια τυχαία ακολουθία δεν χρειάζεται να φαίνεται τυχαία στους ανθρώπους. Παράγετε δέκα αριθμούς ανάμεσα στο 1 και το 10 και θα βλέπετε τακτικά μια επανάληψη, ένα σχεδόν-ζευγάρι όπως 7, 7, 8, ή μια σύντομη ακολουθία με τιμές συγκεντρωμένες προς το πάνω μέρος του εύρους — και καθεμία από αυτές τις περιπτώσεις είναι απολύτως φυσιολογική. Η πραγματική τυχαιότητα είναι απρόβλεπτη, όχι ομοιόμορφα κατανεμημένη: κάθε αριθμός εμφανίζεται ανεξάρτητα από τους προηγούμενους, οι προηγούμενοι αριθμοί δεν έχουν καμία απολύτως επίδραση στους επόμενους, και κανένας αριθμός δεν «χρωστάει» ποτέ να εμφανιστεί. Το ένστικτο που ισχυρίζεται το αντίθετο είναι η πλάνη του τζογαδόρου, και είναι το ίδιο ένστικτο που κάνει τους ίδιους τους ανθρώπους κακές γεννήτριες τυχαίων αριθμών — όταν μας ζητούν να επινοήσουμε μια τυχαία ακολουθία, αποφεύγουμε τις επαναλήψεις και κατανέμουμε τις τιμές πολύ πιο ομοιόμορφα απ' όσο θα το έκανε ποτέ η τύχη. Ένα αποτέλεσμα που φαίνεται ύποπτα τακτοποιημένο είναι το αποτύπωμα ενός ανθρώπου· η γνήσια τυχαιότητα παράγει συσσωματώματα.

Γιατί να επιλέξετε αυτή τη γεννήτρια τυχαίων αριθμών;

Οι τυχαίοι αριθμοί εμφανίζονται σε πολύ περισσότερα μέρη απ' όσο περιμένουν οι περισσότεροι άνθρωποι. Οι εκπαιδευτικοί καλούν μαθητές χωρίς να έχουν ευνοούμενους. Οι streamers και οι ομάδες μάρκετινγκ κληρώνουν νικητές διαγωνισμών και λαχείων μπροστά σε ένα κοινό που πρέπει να πιστέψει το αποτέλεσμα. Οι παίκτες αντικαθιστούν ένα χαμένο ζάρι ή αποφασίζουν ποιος ξεκινά πρώτος, ενώ σε τουρνουά κληρώνεται η αρχική σειρά. Οι ερευνητές επιλέγουν ένα τυχαίο δείγμα ώστε τα ευρήματά τους να ισχύουν και για όσους δεν συμμετείχαν. Οι προγραμματιστές παράγουν δοκιμαστικά δεδομένα, ορίζουν αρχική τιμή (seed) σε προσομοιώσεις και επιλέγουν αναγνωριστικά κατά τη διάρκεια του QA. Το κοινό στοιχείο είναι μια τυχαία διαδικασία επιλογής που μπορεί να εξηγηθεί εκ των υστέρων: επειδή η παραγωγή χρησιμοποιεί κρυπτογραφική τυχαιότητα και πραγματοποιείται εξ ολοκλήρου στη συσκευή σας, μπορείτε να δείξετε πώς παρήχθη το αποτέλεσμα αν κάποιος το αμφισβητήσει.

Αυτή η γεννήτρια έχει μερικούς σημαντικούς περιορισμούς που αξίζει να γνωρίζετε. Η λειτουργία «Χωρίς επαναλήψεις» δεν μπορεί να παράγει περισσότερους αριθμούς απ' όσους περιέχει το εύρος: είκοσι μοναδικές τιμές ανάμεσα στο 1 και το 10 απλώς δεν υπάρχουν. Οι παραγωγές είναι ανεξάρτητες και τα προηγούμενα αποτελέσματα δεν επηρεάζουν τα επόμενα, οπότε η ανανέωση της σελίδας δεν επαναφέρει κανέναν κύκλο — απλώς δεν υπάρχει κύκλος στον οποίο να βρίσκεστε. Και παρόλο που οι αριθμοί είναι κρυπτογραφικά ασφαλείς, μια κλήρωση εδώ είναι μια δίκαιη επιλογή και όχι πρόβλεψη: οι επίσημες κληρώσεις λαχείων χρησιμοποιούν δικό τους φυσικό ή πιστοποιημένο εξοπλισμό, και ό,τι υπολογίζεται στο πρόγραμμα περιήγησής σας δεν έχει καμία σχέση μαζί τους. Μέσα σε αυτούς τους περιορισμούς, η εγγύηση είναι ισχυρή: κάθε αριθμός στο εύρος σας έχει ακριβώς την ίδια πιθανότητα, σε κάθε μεμονωμένη παραγωγή.

FAQ

Είναι η τυχαιότητα κρυπτογραφικά ασφαλής;

Χρησιμοποιείται το Web Crypto API του προγράμματος περιήγησής σας (crypto.getRandomValues), το οποίο αντλεί τυχαιότητα από την κρυπτογραφικά ασφαλή πηγή του λειτουργικού σας συστήματος. Σε αντίθεση με τις απλές ψευδοτυχαίες συναρτήσεις, το αποτέλεσμά του έχει σχεδιαστεί να είναι απρόβλεπτο στην πράξη, και το rejection sampling διατηρεί ίση πιθανότητα για κάθε αριθμό στο εύρος αντί να ευνοεί τις μικρότερες τιμές.

Πώς μπορώ να παράγω έναν τυχαίο αριθμό σε συγκεκριμένο εύρος;

Εισαγάγετε τη μικρότερη δυνατή τιμή στο πεδίο «Ελάχ» και τη μεγαλύτερη στο πεδίο «Μέγ», έπειτα πατήστε «Δημιουργία». Και τα δύο όρια περιλαμβάνονται στο αποτέλεσμα, οπότε ένα εύρος από 1 έως 10 μπορεί να δώσει τόσο το 1 όσο και το 10.

Μπορώ να παράγω πολλούς τυχαίους αριθμούς ταυτόχρονα;

Ναι. Ορίστε το «Πλήθος» στον αριθμό που χρειάζεστε (έως 1000) και η γεννήτρια θα παράγει ολόκληρη τη λίστα με ένα κλικ. Στη συνέχεια μπορείτε να αντιγράψετε όλα τα αποτελέσματα στο πρόχειρο με το κουμπί αντιγραφής, ή να τα αποθηκεύσετε σε αρχείο.

Μπορώ να παράγω πολλαπλά σύνολα αριθμών ταυτόχρονα;

Ναι. Αλλάξτε τη «Μορφή εξόδου» από «Νέα γραμμή» σε «Διαχωρισμένα με κενό» ή «Διαχωρισμένα με κόμμα» για να εμφανιστεί το πεδίο «Αριθμός συνόλων». Ορίστε το στον αριθμό ανεξάρτητων παραγωγών που χρειάζεστε — για παράδειγμα είκοσι σύνολα των 3 αριθμών για είκοσι γύρους λαχείου — και επιλέξτε αν επιτρέπονται διπλότυπα μεταξύ διαφορετικών συνόλων.

Μπορώ να ταξινομήσω τους αριθμούς που παράγονται;

Ναι. Χρησιμοποιήστε την επιλογή «Σειρά ταξινόμησης» για να διατάξετε κάθε λίστα αύξουσα ή φθίνουσα, ή αφήστε την στο «Κανένα» για να διατηρήσετε τους αριθμούς με τη σειρά που παρήχθησαν.

Πώς αποφεύγω τους διπλότυπους αριθμούς;

Ενεργοποιήστε τον διακόπτη «Χωρίς επαναλήψεις». Όταν είναι ενεργοποιημένος, κάθε αριθμός στη λίστα είναι διαφορετικός — ιδανικό για λαχεία, κληρώσεις δώρων ή διαχωρισμό ανθρώπων σε ομάδες. Λάβετε υπόψη ότι το πλήθος δεν μπορεί να υπερβεί το μέγεθος του εύρους: δεν μπορείτε να παράγετε 20 μοναδικούς αριθμούς ανάμεσα στο 1 και το 10.

Γιατί συνεχίζουν να επαναλαμβάνονται οι ίδιοι αριθμοί;

Επειδή οι ανεξάρτητες παραγωγές επαναλαμβάνονται, και έτσι μοιάζει η τυχαιότητα. Κάθε παραγωγή αγνοεί εντελώς όλες τις προηγούμενες, οπότε σε ένα εύρος από 1 έως 10 η πιθανότητα να εμφανιστεί ο ίδιος αριθμός δύο φορές στη σειρά είναι 1 στις 10 κάθε φορά — αυτό είναι φυσιολογικό, όχι σφάλμα. Αν χρειάζεστε μια λίστα χωρίς επαναλήψεις, ενεργοποιήστε το «Χωρίς επαναλήψεις»· αυτό περιορίζει σκόπιμα την παραγωγή, αντί να διορθώνει κάποιο σφάλμα.

Γιατί μια τυχαία ακολουθία δεν φαίνεται τυχαία;

Επειδή η πραγματική τυχαιότητα είναι απρόβλεπτη, όχι ομοιόμορφα κατανεμημένη. Οι άνθρωποι περιμένουν ένα τυχαίο αποτέλεσμα να είναι τακτοποιημένα κατανεμημένο, οπότε συσσωματώματα, επαναλήψεις και σύντομες σειρές όπως 7, 7, 8 φαίνονται σαν σφάλματα, ενώ είναι ακριβώς αυτό που παράγει η τύχη. Μια ακολουθία που φαίνεται τακτοποιημένη σε έναν άνθρωπο συνήθως δεν ήταν τυχαία.

Μπορώ να εμπιστευτώ την τυχαιότητα που παράγεται σε ένα πρόγραμμα περιήγησης;

Ναι, όταν προέρχεται από το Web Crypto API, όπως συμβαίνει εδώ. Το crypto.getRandomValues παρέχει κρυπτογραφικά ασφαλείς τυχαίες τιμές χρησιμοποιώντας την πηγή τυχαιότητας του λειτουργικού σας συστήματος, και όχι ένα JavaScript PRNG όπως το Math.random(). Το Math.random() είναι αυτό που δεν πρέπει να εμπιστεύεστε για οτιδήποτε έχει πραγματική σημασία: είναι ντετερμινιστικό και δεν σχεδιάστηκε ποτέ για να είναι απρόβλεπτο.

Μπορούν οι τυχαίοι αριθμοί να προβλεφθούν ή να επηρεαστούν;

Όχι εδώ. Οι τιμές προέρχονται από την κρυπτογραφικά ασφαλή γεννήτρια του λειτουργικού σας συστήματος, οπότε η παρατήρηση προηγούμενων αποτελεσμάτων δεν αποκαλύπτει τίποτα για το επόμενο, και η παραγωγή πραγματοποιείται εξ ολοκλήρου στη συσκευή σας — δεν υπάρχει διακομιστής για παρέμβαση και κανένα αίτημα για υποκλοπή. Ούτε εμείς μπορούμε να επηρεάσουμε τα αποτελέσματά σας, γιατί δεν τα βλέπουμε ποτέ.

Είναι κατάλληλο για την επιλογή νικητών σε διαγωνισμούς ή λαχεία;

Ναι. Αναθέστε σε κάθε συμμετέχοντα έναν αριθμό, παράγετε ένα αποτέλεσμα σε αυτό το εύρος, και κερδίζει ο συμμετέχων του οποίου ο αριθμός ταιριάζει. Επειδή η πηγή είναι κρυπτογραφικά ασφαλής και η παραγωγή πραγματοποιείται εξ ολοκλήρου στη συσκευή σας, η διαδικασία είναι εύκολο να εξηγηθεί και να τεκμηριωθεί αν κάποιος συμμετέχων αμφισβητήσει το αποτέλεσμα. Αν επιλέγετε αριθμούς για ένα δελτίο λαχείου, το εργαλείο λειτουργεί ως μέσο τυχαίας επιλογής, όχι ως πρόβλεψη: οι επίσημες κληρώσεις λαχείων είναι εντελώς ανεξάρτητες από αυτό.

Η ανανέωση της σελίδας αλλάζει την τυχαιότητα;

Όχι, και δεν χρειάζεται καν. Κάθε παραγωγή ζητά ήδη νέες τυχαίες τιμές από το λειτουργικό σύστημα, οπότε τα αποτελέσματα είναι ανεξάρτητα είτε πατήσετε «Δημιουργία» δέκα φορές είτε επαναφορτώσετε τη σελίδα ανάμεσα σε κάθε πάτημα. Δεν υπάρχει κύκλος για επανεκκίνηση και καμία κατάσταση που να παλιώνει — η ανανέωση απλώς καθαρίζει τα αποτελέσματα που εμφανίζονται στην οθόνη.

Είναι η γεννήτρια δωρεάν, και αποθηκεύετε τους αριθμούς μου;

Το εργαλείο είναι εντελώς δωρεάν και δεν απαιτεί εγγραφή. Όλοι οι αριθμοί παράγονται τοπικά στο πρόγραμμα περιήγησής σας και δεν εγκαταλείπουν ποτέ τη συσκευή σας, οπότε δεν θα μπορούσαμε να αποθηκεύσουμε ή να δούμε τα αποτελέσματά σας ακόμη κι αν θέλαμε.