Πολυλειτουργική γεννήτρια τυχαίων αριθμών. Γεννήτρια τυχαίων αριθμών χωρίς επανάληψη. Γεννήτρια ψευδοτυχαίων αριθμών και γεννήτρια τυχαίων αριθμών

Έχουμε μια ακολουθία αριθμών που αποτελείται από πρακτικά ανεξάρτητα στοιχεία που υπακούουν σε μια δεδομένη κατανομή. Κατά κανόνα, ομοιόμορφη κατανομή.

Μπορείτε να δημιουργήσετε τυχαίους αριθμούς στο Excel με διαφορετικούς τρόπους και μεθόδους. Ας εξετάσουμε μόνο τα καλύτερα από αυτά.

Συνάρτηση τυχαίου αριθμού στο Excel

  1. Η συνάρτηση RAND επιστρέφει έναν τυχαίο, ομοιόμορφα κατανεμημένο πραγματικό αριθμό. Θα είναι μικρότερο από 1, μεγαλύτερο ή ίσο με 0.
  2. Η συνάρτηση RANDBETWEEN επιστρέφει έναν τυχαίο ακέραιο.

Ας δούμε τη χρήση τους με παραδείγματα.

Δειγματοληψία τυχαίων αριθμών με χρήση RAND

Αυτή η συνάρτηση δεν απαιτεί ορίσματα (RAND()).

Για να δημιουργήσετε έναν τυχαίο πραγματικό αριθμό στην περιοχή από το 1 έως το 5, για παράδειγμα, χρησιμοποιήστε τον ακόλουθο τύπο: =RAND()*(5-1)+1.

Ο επιστρεφόμενος τυχαίος αριθμός κατανέμεται ομοιόμορφα στο διάστημα.

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

  1. Κάντε κλικ στο κελί με έναν τυχαίο αριθμό.
  2. Στη γραμμή τύπων, επιλέξτε τον τύπο.
  3. Πατήστε F9. ΚΑΙ ΕΙΣΑΓΕΤΕ.

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


Το εύρος των κατακόρυφων τιμών είναι η συχνότητα. Οριζόντια - "τσέπες".



Λειτουργία RANDBETWEEN

Η σύνταξη για τη συνάρτηση RANDBETWEEN είναι (κάτω όριο, άνω όριο). Το πρώτο όρισμα πρέπει να είναι μικρότερο από το δεύτερο. Διαφορετικά, η συνάρτηση θα προκαλέσει σφάλμα. Τα όρια θεωρούνται ακέραιοι. Ο τύπος απορρίπτει το κλασματικό μέρος.

Παράδειγμα χρήσης της συνάρτησης:

Τυχαίοι αριθμοί με ακρίβεια 0,1 και 0,01:

Πώς να φτιάξετε μια γεννήτρια τυχαίων αριθμών στο Excel

Ας φτιάξουμε μια γεννήτρια τυχαίων αριθμών που δημιουργεί μια τιμή από ένα συγκεκριμένο εύρος. Χρησιμοποιούμε έναν τύπο όπως: =INDEX(A1:A10,INTEGER(RAND()*10)+1).

Ας φτιάξουμε μια γεννήτρια τυχαίων αριθμών στην περιοχή από 0 έως 100 σε βήματα του 10.

Πρέπει να επιλέξετε 2 τυχαίες από τη λίστα τιμών κειμένου. Χρησιμοποιώντας τη συνάρτηση RAND, συγκρίνουμε τιμές κειμένου στην περιοχή A1:A7 με τυχαίους αριθμούς.

Ας χρησιμοποιήσουμε τη συνάρτηση INDEX για να επιλέξουμε δύο τυχαίες τιμές κειμένου από την αρχική λίστα.

Για να επιλέξετε μία τυχαία τιμή από τη λίστα, χρησιμοποιήστε τον ακόλουθο τύπο: =INDEX(A1:A7,RANDBETWEEN(1,COUNT(A1:A7))).

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

Οι συναρτήσεις RAND και RANDBETWEEN παράγουν τυχαίους αριθμούς με ομοιόμορφη κατανομή. Οποιαδήποτε τιμή με την ίδια πιθανότητα μπορεί να πέσει στο κατώτερο όριο του ζητούμενου εύρους και στο ανώτερο. Αυτό έχει ως αποτέλεσμα μια τεράστια διαφορά από την τιμή στόχο.

Μια κανονική κατανομή σημαίνει ότι οι περισσότεροι από τους αριθμούς που δημιουργούνται είναι κοντά στον αριθμό στόχο. Ας προσαρμόσουμε τον τύπο RANDBETWEEN και ας δημιουργήσουμε έναν πίνακα δεδομένων με κανονική κατανομή.

Το κόστος του προϊόντος Χ είναι 100 ρούβλια. Ολόκληρη η παρτίδα που παράγεται ακολουθεί κανονική κατανομή. Μια τυχαία μεταβλητή ακολουθεί επίσης μια κανονική κατανομή πιθανοτήτων.

Υπό αυτές τις συνθήκες, η μέση τιμή του εύρους είναι 100 ρούβλια. Ας δημιουργήσουμε έναν πίνακα και ας δημιουργήσουμε ένα γράφημα με κανονική κατανομή με τυπική απόκλιση 1,5 ρούβλια.

Χρησιμοποιούμε τη συνάρτηση: =NORMINV(RAND();100;1.5).

Το Excel υπολόγισε ποιες τιμές ήταν εντός του εύρους πιθανότητας. Δεδομένου ότι η πιθανότητα παραγωγής ενός προϊόντος με κόστος 100 ρούβλια είναι μέγιστη, ο τύπος δείχνει τιμές κοντά στο 100 πιο συχνά από άλλους.

Ας προχωρήσουμε στη σχεδίαση του γραφήματος. Πρώτα πρέπει να δημιουργήσετε έναν πίνακα με κατηγορίες. Για να γίνει αυτό, χωρίζουμε τον πίνακα σε περιόδους:

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

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

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

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

Επιλογή

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

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

Πολλοί, για παράδειγμα, συνδέονται στη λειτουργικότητά τους με ένα συγκεκριμένο κοινωνικό δίκτυο(για παράδειγμα, πολλές εφαρμογές γεννήτριας λειτουργούν μόνο με συνδέσμους από αυτήν).

Πλέον απλές γεννήτριεςαπλά προσδιορίζουν τυχαία έναν αριθμό μέσα σε ένα δεδομένο εύρος.

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

Ουσιαστικά δεν έχουν άλλη χρήση.

Συμβουλή!Όταν επιλέγετε την καταλληλότερη γεννήτρια, είναι σημαντικό να λάβετε υπόψη για ποιον σκοπό θα χρησιμοποιηθεί.

Προδιαγραφές

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

Πίνακας 1. Χαρακτηριστικά της λειτουργίας διαδικτυακών εφαρμογών για τη δημιουργία τυχαίου αριθμού
ΟνομαΚοινωνικό δίκτυοΠολλαπλά αποτελέσματαΕπιλέξτε από μια λίστα αριθμώνOnline widget για τον ιστότοποΕπιλέξτε από μια σειράΑπενεργοποίηση επαναλήψεων
RandStuffΝαίΝαίΟχιΝαίΟχι
Ρίχνω κλήρουςΕπίσημος ιστότοπος ή VKontakteΟχιΟχιΝαίΝαίΝαί
Τυχαίος αριθμόςΕπίσημος ιστότοποςΟχιΟχιΟχιΝαίΝαί
RandomusΕπίσημος ιστότοποςΝαίΟχιΟχιΝαίΟχι
Τυχαίοι αριθμοίΕπίσημος ιστότοποςΝαίΟχιΟχιΟχιΟχι

Όλες οι εφαρμογές που αναφέρονται στον πίνακα περιγράφονται λεπτομερέστερα παρακάτω.

RandStuff

Μπορείτε να χρησιμοποιήσετε αυτήν την εφαρμογή ηλεκτρονικά ακολουθώντας τον σύνδεσμο στον επίσημο ιστότοπο http://randstuff.ru/number/.

Αυτή είναι μια απλή γεννήτρια τυχαίων αριθμών, χαρακτηρίζεται από γρήγορη και σταθερή λειτουργία.

Εφαρμόζεται με επιτυχία τόσο σε μορφή ξεχωριστής αυτόνομης εφαρμογής στον επίσημο ιστότοπο, όσο και ως εφαρμογή στο .

Η ιδιαιτερότητα αυτής της υπηρεσίας είναι ότι μπορεί να επιλέξει έναν τυχαίο αριθμό τόσο από ένα καθορισμένο εύρος όσο και από μια συγκεκριμένη λίστα αριθμών που μπορούν να καθοριστούν στον ιστότοπο.

  • Σταθερή και γρήγορη εργασία.
  • Έλλειψη άμεσης σύνδεσης με ένα κοινωνικό δίκτυο.
  • Μπορείτε να επιλέξετε έναν ή περισσότερους αριθμούς.
  • Μπορείτε να επιλέξετε μόνο μεταξύ των καθορισμένων αριθμών.

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

Ρίχνω κλήρους

Αυτή η εφαρμογή είναι μια απλή γεννήτρια λειτουργιών, που υλοποιείται στον επίσημο ιστότοπο με τη μορφή εφαρμογής VKontakte.

Υπάρχει επίσης ένα γραφικό στοιχείο γεννήτριας για εισαγωγή στον ιστότοπό σας.

Η κύρια διαφορά από την προηγούμενη εφαρμογή που περιγράφηκε είναι ότι αυτό σας επιτρέπει να απενεργοποιήσετε την επανάληψη του αποτελέσματος.

Δηλαδή, όταν πραγματοποιείτε πολλές γενιές στη σειρά σε μία συνεδρία, ο αριθμός δεν θα επαναληφθεί.

  • Διαθεσιμότητα γραφικού στοιχείου για εισαγωγή σε ιστότοπο ή ιστολόγιο.
  • Δυνατότητα απενεργοποίησης της επανάληψης αποτελεσμάτων.
  • Η παρουσία της συνάρτησης «ακόμα πιο τυχαίας», μετά την ενεργοποίηση της οποίας αλλάζει ο αλγόριθμος επιλογής.

Οι κριτικές χρηστών είναι οι εξής: "Λειτουργεί σταθερά, είναι αρκετά βολικό στη χρήση", "Βολική λειτουργικότητα", "Χρησιμοποιώ μόνο αυτήν την υπηρεσία".

Τυχαίος αριθμός

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

Για να δημιουργήσετε έναν αριθμό, επιλέξτε έναν αριθμό πηγής. Επιλέξτε τον τελικό αριθμό. Καθορίστε τον αριθμό των αριθμών που θα δημιουργηθούν. Επιπλέον, μπορείτε να καθορίσετε αριθμούς που θα αγνοηθούν.

Αυτή η γεννήτριαΟι αριθμοί χρησιμοποιούν έναν πολύπλοκο αλγόριθμο. Αυτό διασφαλίζει ότι κάθε αριθμός είναι πραγματικά τυχαίος.

Τυχαίος αριθμός

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

Αυτή είναι μια καθολική γεννήτρια τυχαίων αριθμών. Είναι κατάλληλο για οποιαδήποτε ανάγκη απόκτησης τυχαίου αριθμού. Όλοι οι αριθμοί που ελήφθησαν είναι εντελώς τυχαίοι. Χρειάζεται μόνο να υποδείξετε τα δεδομένα πηγής. Το RNG μας θα κάνει τα υπόλοιπα για εσάς.
Είναι καλό να έχετε πάντα στη διάθεσή σας μια τέτοια τυχαία γεννήτρια. Μπορείτε να παίξετε το λαχείο εύκολα. Έχοντας βεβαιότητα ότι αυτοί οι αριθμοί ελήφθησαν τυχαία.

Γεννήτρια τυχαίων αριθμών για κλήρωση

Θέλετε να λαμβάνετε τυχαίους αριθμούς χωρίς επανάληψη. Επίσης δεν χρειάζεσαι κάποιους αριθμούς. Γιατί κατά τη γνώμη σας σίγουρα δεν θα πέσουν έξω. Μπορείτε εύκολα να διαμορφώσετε τη λειτουργία της γεννήτριας αριθμών που χρειάζεστε. Και θα σας δώσει μόνο χρήσιμους συνδυασμούς αριθμών. Δεν χρειάζεστε πλέον πολλές διαφορετικές γεννήτριες. Αυτό το RNG είναι καθολικό. Αυτή η γεννήτρια προσαρμόζεται εύκολα για εσάς. Η γεννήτρια δεν έχει περιορισμούς ως προς τον αριθμό και το εύρος των αριθμών. Αυτή η γενιά εκτελείται από την πλευρά του διακομιστή και όχι από το πρόγραμμα περιήγησής σας. Έχουμε εξαλείψει όλους τους παράγοντες που θα μπορούσαν να επηρεάσουν το αποτέλεσμα της τυχαίας επιλογής.

Νέα γεννήτρια RNG

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

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

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

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

Επιλογή

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

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

Πολλοί, για παράδειγμα, συνδέονται λόγω της λειτουργικότητάς τους με ένα συγκεκριμένο κοινωνικό δίκτυο (για παράδειγμα, πολλές εφαρμογές γεννήτριας στο VKontakte λειτουργούν μόνο με συνδέσμους από αυτό το κοινωνικό δίκτυο).

Οι απλούστερες γεννήτριες απλώς προσδιορίζουν τυχαία έναν αριθμό μέσα σε ένα δεδομένο εύρος.

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

Ουσιαστικά δεν έχουν άλλη χρήση.

<Рис. 1 Генератор>

Συμβουλή!Όταν επιλέγετε την καταλληλότερη γεννήτρια, είναι σημαντικό να λάβετε υπόψη για ποιον σκοπό θα χρησιμοποιηθεί.

Προδιαγραφές

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

Πίνακας 1. Χαρακτηριστικά της λειτουργίας διαδικτυακών εφαρμογών για τη δημιουργία τυχαίου αριθμού
Ονομα Κοινωνικό δίκτυο Πολλαπλά αποτελέσματα Επιλέξτε από μια λίστα αριθμών Online widget για τον ιστότοπο Επιλέξτε από μια σειρά Απενεργοποίηση επαναλήψεων
RandStuff Ναί Ναί Οχι Ναί Οχι
Ρίχνω κλήρους Επίσημος ιστότοπος ή VKontakte Οχι Οχι Ναί Ναί Ναί
Τυχαίος αριθμός Επίσημος ιστότοπος Οχι Οχι Οχι Ναί Ναί
Randomus Επίσημος ιστότοπος Ναί Οχι Οχι Ναί Οχι
Τυχαίοι αριθμοί Επίσημος ιστότοπος Ναί Οχι Οχι Οχι Οχι

Όλες οι εφαρμογές που αναφέρονται στον πίνακα περιγράφονται λεπτομερέστερα παρακάτω.

<Рис. 2 Случайные числа>

RandStuff

<Рис. 3 RandStuff>

Μπορείτε να χρησιμοποιήσετε αυτήν την εφαρμογή ηλεκτρονικά ακολουθώντας τον σύνδεσμο στον επίσημο ιστότοπο http://randstuff.ru/number/.

Αυτή είναι μια απλή γεννήτρια τυχαίων αριθμών, χαρακτηρίζεται από γρήγορη και σταθερή λειτουργία.

Υλοποιείται με επιτυχία τόσο με τη μορφή ξεχωριστής ανεξάρτητης εφαρμογής στον επίσημο ιστότοπο όσο και ως εφαρμογή στο κοινωνικό δίκτυο VKontakte.

Η ιδιαιτερότητα αυτής της υπηρεσίας είναι ότι μπορεί να επιλέξει έναν τυχαίο αριθμό τόσο από ένα καθορισμένο εύρος όσο και από μια συγκεκριμένη λίστα αριθμών που μπορούν να καθοριστούν στον ιστότοπο.

Πλεονεκτήματα:

  • Σταθερή και γρήγορη εργασία.
  • Έλλειψη άμεσης σύνδεσης με ένα κοινωνικό δίκτυο.
  • Μπορείτε να επιλέξετε έναν ή περισσότερους αριθμούς.
  • Μπορείτε να επιλέξετε μόνο μεταξύ των καθορισμένων αριθμών.

Μειονεκτήματα:

  • Αδυναμία διεξαγωγής κλήρωσης VKontakte (αυτό απαιτεί ξεχωριστή εφαρμογή).
  • Οι εφαρμογές για το VKontakte δεν εκτελούνται σε όλα τα προγράμματα περιήγησης.
  • Το αποτέλεσμα μερικές φορές φαίνεται προβλέψιμο επειδή χρησιμοποιείται μόνο ένας αλγόριθμος υπολογισμού.

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

Ρίχνω κλήρους

<Рис. 4 Cast Lots>

Αυτή η εφαρμογή είναι μια απλή γεννήτρια λειτουργιών, που υλοποιείται στον επίσημο ιστότοπο με τη μορφή εφαρμογής VKontakte.

Υπάρχει επίσης ένα γραφικό στοιχείο γεννήτριας για εισαγωγή στον ιστότοπό σας.

Η κύρια διαφορά από την προηγούμενη εφαρμογή που περιγράφηκε είναι ότι αυτό σας επιτρέπει να απενεργοποιήσετε την επανάληψη του αποτελέσματος.

Δηλαδή, όταν πραγματοποιείτε πολλές γενιές στη σειρά σε μία συνεδρία, ο αριθμός δεν θα επαναληφθεί.

  • Διαθεσιμότητα γραφικού στοιχείου για εισαγωγή σε ιστότοπο ή ιστολόγιο.
  • Δυνατότητα απενεργοποίησης της επανάληψης αποτελεσμάτων.
  • Η παρουσία της συνάρτησης «ακόμα πιο τυχαίας», μετά την ενεργοποίηση της οποίας αλλάζει ο αλγόριθμος επιλογής.

Αρνητικός:

  • Αδυναμία προσδιορισμού πολλών αποτελεσμάτων ταυτόχρονα.
  • Αδυναμία επιλογής από μια συγκεκριμένη λίστα αριθμών.
  • Για να επιλέξετε έναν νικητή στα δημόσια, πρέπει να χρησιμοποιήσετε ένα ξεχωριστό γραφικό στοιχείο VKontakte.

Οι κριτικές χρηστών είναι οι εξής: "Λειτουργεί σταθερά, είναι αρκετά βολικό στη χρήση", "Βολική λειτουργικότητα", "Χρησιμοποιώ μόνο αυτήν την υπηρεσία".

Τυχαίος αριθμός

<Рис. 5 Случайное число>

Αυτή η υπηρεσία βρίσκεται στη διεύθυνση http://randomnumber.rf/.

Απλή γεννήτρια με ελάχιστες λειτουργίες και πρόσθετα χαρακτηριστικά.

Μπορεί να δημιουργήσει τυχαία αριθμούς εντός ενός καθορισμένου εύρους (μέγιστο από 1 έως 99999).

Ο ιστότοπος δεν έχει γραφικό σχέδιο και επομένως η σελίδα φορτώνεται εύκολα.

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

Αρνητικός:

  • Έλλειψη widget για το VKontakte.
  • Δεν υπάρχει δυνατότητα διεξαγωγής κληρώσεων.
  • Δεν υπάρχει τρόπος να ενσωματώσετε το αποτέλεσμα σε ιστολόγιο ή ιστότοπο.

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

Randomus

<Рис. 6 Рандомус>

Μπορείτε να χρησιμοποιήσετε αυτήν τη γεννήτρια τυχαίων αριθμών στη διεύθυνση http://randomus.ru/.

Ένα άλλο, αρκετά απλό, αλλά λειτουργική γεννήτρια τυχαίων αριθμών.

Η υπηρεσία έχει επαρκή λειτουργικότητα για τον προσδιορισμό τυχαίων αριθμών, αλλά δεν είναι κατάλληλη για τη διεξαγωγή κληρώσεων και άλλων πιο περίπλοκων διαδικασιών.

Αρνητικός:

  • Αδυναμία διατήρησης σχεδίων με βάση αναδημοσιεύσεις ανάρτησης κ.λπ.
  • Δεν υπάρχει εφαρμογή για VKontakte ή γραφικό στοιχείο για τον ιστότοπο.
  • Δεν είναι δυνατό να απενεργοποιήσετε την επανάληψη των αποτελεσμάτων.

Έχετε αναρωτηθεί ποτέ πώς λειτουργεί το Math.random(); Τι είναι ένας τυχαίος αριθμός και πώς προκύπτει; Φανταστείτε μια ερώτηση συνέντευξης - γράψτε τη γεννήτρια τυχαίων αριθμών σε μερικές γραμμές κώδικα. Λοιπόν, τι είναι αυτό, ένα ατύχημα και είναι δυνατόν να το προβλέψουμε;

Είμαι πολύ γοητευμένος από διάφορα παζλ και εργασίες πληροφορικής και η γεννήτρια τυχαίων αριθμών είναι μία από αυτές τις εργασίες. Συνήθως στο κανάλι μου στο Telegram αναλύω κάθε λογής παζλ και διάφορες εργασίες από συνεντεύξεις. Το πρόβλημα της γεννήτριας τυχαίων αριθμών έχει αποκτήσει μεγάλη δημοτικότητα και ήθελα να το διαιωνίσω στα βάθη μιας από τις έγκυρες πηγές πληροφοριών - δηλαδή εδώ στο Habré.

Αυτό το υλικό θα είναι χρήσιμο σε όλους εκείνους τους front-enders και τους προγραμματιστές του Node.js που βρίσκονται στην αιχμή της τεχνολογίας και θέλουν να συμμετάσχουν σε ένα έργο/startup blockchain, όπου ακόμη και οι προγραμματιστές front-end κάνουν ερωτήσεις σχετικά με την ασφάλεια και την κρυπτογραφία, στο τουλάχιστον σε βασικό επίπεδο.

Γεννήτρια ψευδοτυχαίων αριθμών και γεννήτρια τυχαίων αριθμών

Για να πάρουμε κάτι τυχαίο, χρειαζόμαστε μια πηγή εντροπίας, μια πηγή κάποιου χάους από την οποία θα χρησιμοποιήσουμε για να δημιουργήσουμε τυχαιότητα.

Αυτή η πηγή χρησιμοποιείται για τη συσσώρευση της εντροπίας και στη συνέχεια τη λήψη από αυτήν μιας αρχικής τιμής (seed), η οποία είναι απαραίτητη για τις γεννήτριες τυχαίων αριθμών (RNG) για τη δημιουργία τυχαίων αριθμών.

Η Γεννήτρια Ψευδοτυχαίων Αριθμών χρησιμοποιεί μια ενιαία αρχική τιμή, εξ ου και η ψευδοτυχαιότητά της, ενώ η Γεννήτρια Τυχαίων Αριθμών δημιουργεί πάντα έναν τυχαίο αριθμό, έχοντας στην αρχή μια υψηλή ποιότητα τυχαία μεταβλητή, το οποίο λαμβάνεται από διάφορες πηγέςεντροπία.

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

Το PRNG έχει κάποιο αλγόριθμο που μπορεί να αναπαραχθεί.
Το RNG είναι η διαδικασία λήψης αριθμών εξ ολοκλήρου από κάποιο είδος θορύβου, η δυνατότητα υπολογισμού που τείνει στο μηδέν. Ταυτόχρονα, το RNG έχει ορισμένους αλγόριθμους για την εξίσωση της κατανομής.

Καταλήξαμε στον δικό μας αλγόριθμο PRNG

Γεννήτρια ψευδοτυχαίοι αριθμοί(PRNG, αγγλική γεννήτρια ψευδοτυχαίων αριθμών, PRNG) — αλγόριθμος που δημιουργεί μια ακολουθία αριθμών, τα στοιχεία της οποίας είναι σχεδόν ανεξάρτητα μεταξύ τους και υπακούουν σε μια δεδομένη κατανομή (συνήθως ομοιόμορφη).
Μπορούμε να πάρουμε μια ακολουθία ορισμένων αριθμών και να πάρουμε το μέτρο του αριθμού από αυτούς. Το πιο απλό παράδειγμα που μου έρχεται στο μυαλό. Πρέπει να σκεφτούμε ποια ακολουθία να πάρουμε και την ενότητα από τι. Εάν απλώς κάνετε απευθείας από το 0 στο N και το συντελεστή 2, θα έχετε μια γεννήτρια 1 και 0:

Συνάρτηση* rand() ( const n = 100; const mod = 2; έστω i = 0; ενώ (true) (απόδοση i % mod; εάν (i++ > n) i = 0; ) ) έστω i = 0; for (έστω x της rand()) (αν (i++ > 100) σπάσει; console.log(x); )
Αυτή η συνάρτηση δημιουργεί την ακολουθία 01010101010101... και δεν μπορεί καν να ονομαστεί ψευδοτυχαία. Για να είναι μια γεννήτρια τυχαία, πρέπει να περάσει την επόμενη δοκιμή bit. Αλλά δεν έχουμε τέτοιο καθήκον. Ωστόσο, ακόμη και χωρίς κανένα τεστ μπορούμε να προβλέψουμε την επόμενη ακολουθία, πράγμα που σημαίνει ότι ένας τέτοιος αλγόριθμος δεν είναι κατάλληλος, αλλά είμαστε στη σωστή κατεύθυνση.

Τι γίνεται αν πάρουμε κάποια γνωστή αλλά μη γραμμική ακολουθία, για παράδειγμα τον αριθμό PI. Και ως τιμή για την ενότητα θα πάρουμε όχι 2, αλλά κάτι άλλο. Μπορείτε ακόμη και να σκεφτείτε την αλλαγή της αξίας της μονάδας. Η ακολουθία των ψηφίων στο Pi θεωρείται τυχαία. Η γεννήτρια μπορεί να λειτουργήσει χρησιμοποιώντας αριθμούς Pi ξεκινώντας από κάποιο άγνωστο σημείο. Ένα παράδειγμα ενός τέτοιου αλγορίθμου, με μια ακολουθία που βασίζεται σε PI και μια μεταβλητή ενότητα:

Const vector = [...Math.PI.toFixed(48).replace(".","")]; συνάρτηση* rand() ( for (έστω i=3; i<1000; i++) { if (i >99) i = 2; για (έστω n=0; n

Αλλά στο JS, ο αριθμός PI μπορεί να εμφανιστεί μόνο μέχρι 48 ψηφία και όχι περισσότερα. Επομένως, είναι ακόμα εύκολο να προβλέψουμε μια τέτοια ακολουθία και κάθε εκτέλεση μιας τέτοιας γεννήτριας θα παράγει πάντα τους ίδιους αριθμούς. Αλλά η γεννήτρια μας έχει ήδη αρχίσει να δείχνει αριθμούς από το 0 έως το 9.

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

Μπορούμε να πάρουμε όχι τον αριθμό Pi, αλλά τον χρόνο σε αριθμητική αναπαράσταση και να θεωρήσουμε αυτόν τον αριθμό ως μια ακολουθία αριθμών, και για να διασφαλίσουμε ότι η ακολουθία δεν επαναλαμβάνεται κάθε φορά, θα τον διαβάσουμε από το τέλος. Συνολικά, ο αλγόριθμός μας για το PRNG μας θα μοιάζει με αυτό:< vector.length) yield (vector[n] % i); vector = newNumVector(); } } // TEST: let i = 0; for (let x of rand()) { if (i++ >Συνάρτηση* rand() (έστω newNumVector = () => [...(+new Date)+""].reverse(); let vector = newNumVector(); έστω i=2; while (true) ( αν ( i++ > 99) i = 2 έστω n=-1;
Αυτό μοιάζει ήδη με μια γεννήτρια ψευδοτυχαίων αριθμών. Και το ίδιο Math.random() είναι ένα PRNG, θα μιλήσουμε για αυτό λίγο αργότερα. Επιπλέον, κάθε φορά παίρνουμε διαφορετικό πρώτο αριθμό.

Βασικά σε αυτά απλά παραδείγματαΜπορείτε να καταλάβετε πώς λειτουργούν πιο πολύπλοκες γεννήτριες τυχαίων αριθμών.Και υπάρχουν ακόμη και έτοιμοι αλγόριθμοι. Για παράδειγμα, ας δούμε ένα από αυτά — αυτό είναι το Linear Congruent PRNG (LCPRNG).

Γραμμικό σύμφωνο PRNG

Το Linear Congruent PRNG (LCPRNG) είναι μια κοινή μέθοδος για τη δημιουργία ψευδοτυχαίων αριθμών. Δεν είναι κρυπτογραφικά ισχυρό. Αυτή η μέθοδος συνίσταται στον υπολογισμό των όρων μιας γραμμικής επαναλαμβανόμενης ακολουθίας modulo μερικά φυσικός αριθμός m, που δίνεται από τον τύπο. Η ακολουθία που προκύπτει εξαρτάται από την επιλογή του αρχικού αριθμού — δηλ. σπόρος. Στο διαφορετικές έννοιεςΟ σπόρος παράγει διαφορετικές ακολουθίες τυχαίων αριθμών. Ένα παράδειγμα εφαρμογής ενός τέτοιου αλγορίθμου σε JavaScript:

Const a = 45; const c = 21; const m = 67; var seed = 2; const rand = () => seed = (a * seed + c) % m; for(έστω i=0; i<30; i++) console.log(rand())
Πολλές γλώσσες προγραμματισμού χρησιμοποιούν LCPRNG (αλλά όχι ακριβώς αυτόν τον αλγόριθμο(!)).

Όπως αναφέρθηκε παραπάνω, μια τέτοια ακολουθία μπορεί να προβλεφθεί. Γιατί λοιπόν χρειαζόμαστε το PRNG; Αν μιλάμε για ασφάλεια, τότε το PRNG είναι πρόβλημα. Αν μιλάμε για άλλες εργασίες, τότε αυτές οι ιδιότητες μπορεί να είναι ένα συν. Για παράδειγμα, για διάφορα ειδικά εφέ και κινούμενα σχέδια γραφικών, μπορεί να χρειαστεί να καλείτε συχνά τυχαία. Και εδώ είναι που η κατανομή των νοημάτων και η απόδοση είναι σημαντική! Οι ασφαλείς αλγόριθμοι δεν μπορούν να καυχηθούν για ταχύτητα.

Μια άλλη ιδιότητα είναι η αναπαραγωγιμότητα. Ορισμένες υλοποιήσεις σάς επιτρέπουν να καθορίσετε έναν σπόρο, και αυτό είναι πολύ χρήσιμο εάν η σειρά πρέπει να επαναληφθεί. Απαιτείται αναπαραγωγή σε τεστ, για παράδειγμα. Και υπάρχουν πολλά άλλα πράγματα που δεν απαιτούν ασφαλές RNG.

Πώς λειτουργεί το Math.random().

Η μέθοδος Math.random() επιστρέφει έναν ψευδοτυχαίο αριθμό κινητής υποδιαστολής από το εύρος = crypto.getRandomValues(new Uint8Array(1)); console.log(rvalue)
Όμως, σε αντίθεση με το Math.random() PRNG, αυτή η μέθοδος απαιτεί πολύ πόρους. Το γεγονός είναι ότι αυτή η γεννήτρια χρησιμοποιεί κλήσεις συστήματος στο λειτουργικό σύστημα για να αποκτήσει πρόσβαση σε πηγές εντροπίας (διεύθυνση mac, CPU, θερμοκρασία κ.λπ.).