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

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

Αρχείο | 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)

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

Θα δείξει...

 

 

Επίσης . . .

Το Δυναμικό Φανταστικό Σκηνικό


Αρκετοί φανταστικοί κόσμοι δεν αλλάζουν, ή αλλάζουν λίγο. Είναι αρκετά φιξαρισμένοι, θα έλεγες. Γνωρίζουμε τι υπάρχει εκεί και τι δεν υπάρχει, και αποκεί και πέρα οι μόνες αλλαγές είναι, ίσως, στην πολιτική σκηνή του κόσμου, ή στο πώς εξελίσσονται κάποιες καταστάσεις. Αλλά ο κόσμος ο ίδιος, κατά βάση, δεν αλλάζει. Ξέρουμε, για παράδειγμα, ότι υπάρχουν αυτές οι φανταστικές φυλές, αυτά τα φανταστικά όντα, αυτά τα είδη μαγείας ή τεχνολογίας, και τέλος. Μεταβάλλονται μόνο οι σχέσεις μεταξύ αυτών – όπως αν ένα βασίλειο γκρεμιστεί ή αν μια καινούργια πόλη ιδρυθεί. Σε πολλές περιπτώσεις, δε, ακόμα κι αυτό δεν συμβαίνει, ή συμβαίνει πολύ διστακτικά, πολύ επιφυλακτικά. Κάποιες αυτοκρατορίες είναι πάντα εκεί, κάποια βασιλεία υπήρχαν και θα υπάρχουν. Μερικές φορές αυτό ισχύει και για κάποιους χαρακτήρες μέσα στις φανταστικές ιστορίες· μοιάζουν κι αυτοί φιξαρισμένοι στο φανταστικό σκηνικό, σαν να είναι μέρος του.

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

Ή, μήπως, όχι;

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

 

Επιλογές Νοεμβρίου (12/11)


Χάρτης με τους αρχαίους ρωμαϊκούς δρόμους, εικόνες από το Bummer California, LocalSend (ασφαλή αποστολή αρχείων τοπικά), Sean Andrew Murray. Η Ιρλανδία καθιερώνει τη χορήγηση μισθού σε δημιουργούς, το Beowulf του Lynd Ward, Greek TV Live, The White Company του Arthur Conan Doyle. «Η πόλη των μαγισσών», Space Type Generator, ερωτικές ταινίες τρόμου. Halloween με Ε.Φ. από το ’70· The Sword of Shannara και αντιγραφές του Τόλκιν· The Fall of Mercury της Leslie F. Stone· Sean Connery και Zardoz. Ο άνθρωπος είναι το ζώο που ονειρεύεται.

 

Περί Γραφής: Νοοτροπίες Διορθώσεων


Πώς πρέπει να μάθεις να σκέφτεσαι προτού ξεκινήσεις να διορθώνεις τα κείμενά σου

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

Αλλά αυτή είναι απλώς η τακτική που ακολουθώ, και σ’αυτό το άρθρο την αναφέρω μόνο. Εκείνο για το οποίο θέλω να μιλήσω εδώ είναι η νοοτροπία με την οποία κάνει (πρέπει να κάνει;) κάποιος τις διορθώσεις σε ένα λογοτεχνικό κείμενο. Και αναφέρομαι, κυρίως, στον συγγραφέα τον ίδιο, όχι σε διορθωτή. Για τον διορθωτή τα πράγματα πιθανώς να είναι αλλιώς – πιο επαγγελματικά, πιο ουδέτερα. Για τον συγγραφέα, όμως, τα πράγματα δεν είναι τόσο ουδέτερα, και όταν ξαναβλέπει ένα κείμενο που έχει γράψει μπορεί – ανάλογα και με την ιδιοσυγκρασία του – να βλέπει πολλά. Μπορεί να βλέπει ακόμα και φαντάσματα – το οποίο είναι πολύ συνηθισμένο· δεν αστειεύομαι.

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

Και δεν υπάρχει μόνο μία νοοτροπία· υπάρχουν πολλές. Θα αναφέρω μερικές που θεωρώ καλές, και μερικές που πιστεύω ότι έχουν ενδιαφέρον.

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

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