Τυχαίοι αριθμοί
Tuesday, March 31st, 2009Όπως ίσως δεν ξέρετε, όλοι οι τυχαίοι αριθμοί (και συνεπώς οι τυχαίες διαδικασίες, τα τυχαία φύλλα τράπουλας, τα τυχαία passwords, τα gotcha captcha κλπ. κλπ.) που χρησιμοποιεί ένας υπολογιστής είναι στην πραγματικότητα ψευδο-τυχαίοι. Δηλαδή δεν είναι καθόλου τυχαίοι αλλά, τουναντίον, ντετερμινιστικά προσδιορισμένοι με έναν αλγόριθμο συνήθως απλό, που έχει όμως την ιδιότητα να παράγει μεγάλα σύνολα αριθμών οι οποίοι ενώ δεν είναι, φαίνονται τυχαίοι. Αυτό σημαίνει οτι ο αλγόριθμος παράγει ένα πακέτο π.χ. 10 δις αριθμών που περνάνε με επιτυχία ένα μεγάλο σύνολο από τεστ φτιαγμένα για να ξεχωρίζουν τυχαία από μη τυχαία πακέτα (ανάμεσά τους σε επιφανή θέση και το τεστ πόκερ).
Στην πραγματικότητα οι ψευδοτυχαίοι αριθμοί είναι προτιμηταίοι σε κάθε εφαρμογή σχετική με υπολογιστή, κυρίως γιατί είναι τσάμπα (σε αντίθεση με πραγματικά τυχαίους αριθμούς που θα έπρεπε να συλλεχθούν από κάποια πραγματικά τυχαία φυσική διαδικασία) αλλά και γιατί είναι δυνατόν να ανακατασκευάσουμε τον κάθε αριθμό ξεχωριστά (χρήσιμο στην διαδικασία παρασκευής και ανάλυσης λογισμικού). [*]
Αν όμως κάποιος θέλει σώνει και ντε, πραγματικά, αληθινά, πέρα για πέρα τυχαίους αριθμούς (και είναι δύσκολο να φανταστεί κανείς γιατί, αλλά τέλος πάντων) μια από τις λίγες ασφαλείς λύσεις είναι να προσπαθήσει να τους εξάγει από μια εγγενώς τυχαία φυσική διαδικασία, την ραδιενεργό β-διάσπαση. Ενώ ο κατά μέσο όρο χρόνος διάσπασης ενός ραδιενεργού πυρήνα μας είναι γνωστός με μεγάλη ακρίβεια, το χρονικό σημείο στο οποίο θα διασπαστεί ένας συγκεκριμένος πυρήνας όχι μόνο είναι άγνωστος, αλλά επίσης εγγενώς τυχαίος. Συγκεκριμένα, έχει 50% πιθανότητα να διασπαστεί σε χρόνο μικρότερο απ’το μέσο όρο, και 50% πιθανότητα να το κάνει σε χρόνο μεγαλύτερο απ’το μέσο όρο. Μετρώντας το χρόνο ανάμεσα σε δυο διαδοχικές διασπάσεις συλλέγει κανείς μηδενικά και άσους αν είναι μικρότερος ή μεγαλύτερος απ’το μέσο όρο και μετατρέπει τα μηδενικά και τους άσσους σε floating point πραγματικούς με την επιθυμητή ακρίβεια στο επιθυμητό διάστημα.
Τώρα όλος αυτός ο τζερτζελές είναι διαθέσιμος και μέσω δικτύου, από την υπηρεσία Hotbits. Εκεί, ένας μετρητής Geiger-Mueller (ένα μαραφέτι που κάνει κλικ κάθε που ένα σωματίδιο ικανό να ιονίσει άτομα περνάει μέσα του) μπροστά από ένα δείγμα ραδιενεργού Καισίου 137 (το ίδιο είδος ατόμου αλλά διαφορετικό ισότοπο χρησιμοποιείται για να ορίσει το δευτερόλεπτο), μετράει τον χρόνο ανάμεσα σε διαδοχικές “εκπυρσοκροτήσεις” ατόμων Καισίου και σας σερβίρει φρέσκους και ζεστους αληθινά τυχαίους αριθμούς (αλλά και passwords). Καλή τύχη!
[*]στην πραγματικότητα μια απ’τις εφαρμογές που χρειάζονται τυχαίους αριθμούς είναι μια τεχνική αριθμητικής ολοκλήρωσης που, όχι τυχαία, αποκαλείται μέθοδος Μοντε Κάρλο. Στις περισσότερες των περιπτώσεων μπορεί κανείς να χρησιμοποιήσει σύνολα αριθμών που λέγονται Quasi-random, και όχι μόνο δεν είναι τυχαίοι, αλλά ούτε καν συμπεριφέρονται ως τυχαίοι: συμπεριφέρονται πολύ καλύτερα για τις εφαρμογές που συζητάμε (δείτε εδώ για μια made by lazopolis εισαγωγή).