Σκιώδη Παραλειπόμενα

του
Κώστα Βουλαζέρη

Αρχείο | RSS Feed

Αναζήτηση Μυστηριακές ΟντότητεςΠαλιά Ελληνικά Εξώφυλλα

Τυχαία

Μια στιγμή...
5 / 3 / 2020

Τελευταία ασχολούμαι με προγραμματισμό πολύ περισσότερο απ’ό,τι παλιά (ίσως να έχω κολλήσει κάποιο μικρόβιο) και έτυχε να παρατηρήσω κάτι που κι αρκετοί άλλοι προγραμματιστές έχω διαβάσει ότι έχει τύχει να παρατηρήσουν: Πολλοί τυχαίοι αριθμοί που βγάζουν οι υπολογιστές δεν είναι αρκετά τυχαίοι.

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

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

Μετά, το seed το πολλαπλασιάζεις με τον μέγιστο και τον ελάχιστο αριθμό που θες να πάρεις – πχ, από 1 έως 10. Έτσι, τελικά, έχεις μια υπολογιστική λειτουργία σαν αυτή (περίπου ίδια σ’όλες τις γλώσσες προγραμματισμού): seed * (max - min) + min. Και όλο αυτό το κάνει floor, δηλαδή το στρογγυλοποιήσεις προς τα κάτω. Πχ, αν έρθει 10,6 γίνεται 10. Επομένως, η λειτουργία καταλήγει να είναι κάπως έτσι: floor(seed * (max - min) + min).

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

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

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

Γιατί;

Μετά, το βρήκα. Έτσι μου φαίνεται, τουλάχιστον. Φταίει το floor – η στρογγυλοποίηση προς τα κάτω.

Μπορείς, όμως, να του βάλεις να στρογγυλοποιεί τον αριθμό, όχι προς τα κάτω, αλλά προς τον κοντινότερο ακέραιο. Πχ, το 80,3 να γίνεται 80, αλλά το 80,6 να γίνεται 81. Εδώ όμως, σύμφωνα με τις κλασικές υπολογιστικές λειτουργίες τύπου «seed * (max - min) ) + min» παρουσιάζεται ένα άλλο πρόβλημα. Αν του βάλεις, πχ, να σου δώσει αριθμό από 1 έως 10, μπορεί να σου δώσει και 0, ή και 11. Κατά τα άλλα, η διασπορά είναι καλή.

Πώς να αποφύγεις το ελάχιστο - 1 και το μέγιστο +1;

Η καλύτερη απάντηση σ’αυτό σκέφτηκα πως είναι ένα απλό loop. Και το ξέρω ότι αυτά είναι «κινέζικα» για όσους δεν ξέρουν από προγραμματισμό. Το loop είναι μια διαρκής επανάληψη της υπολογιστικής λειτουργίας μέχρι να συμβεί κάτι μέσα στο σύστημα. Οπότε, εδώ πρέπει να βάλεις να κάνει loop μέχρι που το αποτέλεσμά σου να μην είναι ελάχιστο-1 ή μέγιστο+1.

Το δοκίμασα και είδα πως η διασπορά βγαίνει καλή.

Οπότε, η υπολογιστική λειτουργία είναι κάπως έτσι:

num = ROUND(seed * (max - min) + min)
loop until (num > min-1) and (num < max+1)

Είναι καλύτερο από το άλλο; Φαίνεται, πάντως, να έχει καλύτερη διασπορά – βλέπω πιο πολλές τυχαίες εικόνες να βγαίνουν απ’ό,τι έβγαιναν πριν – αλλά δεν είναι πολύς καιρός που το έχω δοκιμάσει.

Θα δείξει...

 

 

Επίσης . . .

Η Πολιτική της Φανταστικής Λογοτεχνίας


Η φανταστική λογοτεχνία είναι γεμάτη μονάρχες, ευγενείς, και αριστοκρατία. Το ίδιο (παραδόξως;) ισχύει και για την επιστημονική φαντασία (ή, μήπως, θα έπρεπε απλά να την πούμε φαντασία στο διάστημα;), όπως στο Dune του Herbert, ή, για ένα ακόμα πιο παλιό παράδειγμα, όπως στο Princess of Mars και τις συνέχειές του, του Burroughs. Σε όλα αυτά τα βιβλία έχουμε βασιλιάδες και βασίλισσες, πρίγκιπες και πριγκίπισσες, και κάθε είδους τρελό ή ηρωικό αριστοκράτη.

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

Για το Dune, συγκεκριμένα, είχα διαβάσει κάποιον να σχολιάζει ότι η κοινωνία του είναι «οπισθοδρομική». Και ίσως όντως να είναι... Δηλαδή, αναλογιστείτε: αυτοί οι άνθρωποι ταξιδεύουν στο διάστημα, αλλά ακόμα έχουν δούκες και βαρόνους; Δεν έχουν αντιληφτεί την έννοια της δημοκρατίας; Μαλάκες είναι;

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

Και δεν μπορείς να το κάνεις αυτό με δημοκρατικό πολίτευμα, ρε άνθρωπε; Γιατί;

[Συνέχισε να διαβάζεις]

 

Επιλογές Ιουνίου (15/6)


HWdetails, πρόγραμμα που δείχνει τα χαρακτηριστικά του PC — Συνέντευξη με τον John Coulthart (τέχνη) — The Necromancers του Robert Hugh Benson (δωρεάν βιβλίο) — William Brodie, Robert Louis Stevenson, Dr. Jekyll and Mr. Hyde — Συμβουλές από τον Μεσαίωνα — Helmut Wenske (τέχνη ) — Τι σχήμα έχει πραγματικά η Γη; — Karl Edward Wagner (μέρος δεύτερο: πέρα από τον Kane) — Από ψυχεδελική εμπειρία σε μαθηματικό πρόβλημα — John Blanche (τέχνη, Warhammer) — Ένα ντοκιμαντέρ για την «επιδημία» των κατά συρροήν δολοφόνων στις ΗΠΑ (1950-1999) — Πολλά ακόμα ρέουν στο LinX...

 

Επιλογές Ιουνίου (10/6)


Michelle Avery Konczyk (τέχνη) & Έργα τέχνης με μάσκες & Book of the Three Dragons & Τα ζωόφυτα του Μεσαίωνα & Μυστηριακά δάση (φωτογραφίες) & Φανταστική λογοτεχνία το 1928-29 (όχι μία από τα ίδια) & Kane, του Karl Edward Wagner (acid gothic!) & Marilyn Monroe (σε φανταστικές και εξωτικές περιπέτειες!) & Οι «δουλέμποροι της τρίτης χιλιετίας» στον Ιταλικό Νότο («έκαψαν ζωντανούς εργάτες γιατί δεν είχαν χρήματα να πληρώσουν τα μεταφορικά τους») & το PDP-1 (ιστορικό κομπιούτερ από το 1959) & Πώς να Σκοτώνεις: Ένας Οδηγός για Αστικούς Δολοφόνους (1973-1984) & Σπίτια και χωριά που εμφανίζονται και εξαφανίζονται & Ένας σχολιασμός του είδους New Weird & Η κατάρρευση του φουτουρισμού & Ακόμα περισσότερο έρχονται στο LinX!