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

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

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

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

Θα δείξει...

 

 

Επίσης . . .

Επιλογές Αυγούστου (18/8)


Barry Windsor-Smith και Robert E. Howard & Xerox Hell (αλλοιώστε εικόνες) & Η εκστατική αλήθεια της τέχνης & Chaoclypse & Mâr-Nâmeh, το Βιβλίο των Οιωνών από τα Φίδια & Γεωλογικός χάρτης του φεγγαριού σαν σουρεαλιστικό όνειρο & Morgan Sorensen & Ένα αστεροσκοπείο μέσα στην έρημο & RIP John Crowley & The Greenwood Faun της Nina Antonia & Αντισταθείτε στους τεχνοκράτες και στους «ειδικούς» & πολλά ακόμα έρχονται στο LinX – σύντομα

 

Βιβλιοκριτική: The Dandelion Dynasty: The Grace of Kings· The Wall of Storms· The Veiled Throne· Speaking Bones, του Ken Liu


Αυτή η σειρά (τετραλογία) μού έκανε αίσθηση από διάφορες απόψεις, γι’αυτό κιόλας αποφάσισα να γράψω βιβλιοκριτική. Έπιασα το πρώτο βιβλίο της, The Grace of Kings, σχεδόν τυχαία, και αμέσως κόλλησα. Συνήθως, όταν διαβάζω σειρές φαντασίας, το πρώτο βιβλίο δεν μου αρέσει και τόσο, αλλά, καθώς προχωράω στα επόμενα, η σειρά μού αρέσει ολοένα και περισσότερο. Εδώ – δυστυχώς – συνέβη το ακριβώς αντίθετο...

Το πρώτο βιβλίο με εντυπωσίασε. Σκέφτηκα: Επιτέλους, ένας σύγχρονος συγγραφέας φαντασίας που μου αρέσει! Διότι, τελευταία, δεν βρίσκω και πολλούς σύγχρονους συγγραφείς που να μου αρέσουν. Το Grace of Kings δεν ακολουθεί την κλισέ πλέον, και εμπορική, χρήση της οπτικής γωνίας τρίτου προσώπου που προσκολλιέται κάθε φορά σε έναν χαρακτήρα (όπως, πχ, γίνεται στο A Song of Ice and Fire). Εδώ η οπτική γωνία τρίτου προσώπου είναι πολύ πιο ανοιχτή· μπορεί να γράφει για οτιδήποτε: από τις σκέψεις τριών χαρακτήρων συγχρόνως, μέχρι το τι συμβαίνει σε μια ολόκληρη πόλη. Μια πολύ ευχάριστη αλλαγή στη βαρεμάρα του ύφους που έχει καταντήσει η διεθνής φανταστική λογοτεχνία. Δεν ξέρω αν έχουν αρχίσει να αλλάζουν νοοτροπία (τώρα που η αγορά του βιβλίου χάνει λεφτά διεθνώς) ή αν απλώς ο συγγραφέας είχε κανένα πολύ γερό βύσμα και το πέρασε αυτό σε μεγάλο εκδότη. Και δεν έχει σημασία.

Αυτό δεν είναι το μόνο καλό στο Grace of Kings, φυσικά. Οι χαρακτήρες είναι έξυπνοι και δραστήριοι, ο διάλογος αρκετά έξυπνος και ρεαλιστικός. Η πλοκή ποτέ δεν παύει να κινείται: συνεχώς γίνονται γεγονότα και γεγονότα και γεγονότα. Περιπέτειες μέσα σε περιπέτειες, ατελείωτες. Η ιστορία ξεκινά με μια «κακιά» αυτοκρατορία και διάφορους επαναστάτες εναντίον της αποδώ κι αποκεί· μοιάζει κλισέ, αλλά δεν είναι, έτσι όπως εξελίσσεται. Και ακόμα και οι «κακοί» χαρακτήρες είναι ενδιαφέροντες: κάποιοι τρομαχτικοί, κάποιοι με τη δική τους φιλοσοφία. Ενώ οι «καλοί» είναι ή έξυπνοι ή γενναίοι – μια πολύ ωραία ανάμειξη νοοτροπιών.

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

 

Επιλογές Αυγούστου (5/8)


Sibylle Ruppert (βιομηχανικός, σκοτεινός σουρεαλισμός) 10 ταινίες (από την ανατολική Γερμανία) TikTok Farlands (ένας κρυφός κόσμος) Η Google θα κάνει τα smart phones σας ακόμα πιο περιοριστικά (απαγορεύοντας στον οποιονδήποτε να τρέξει δικό του app) Οι Ευρωπαίοι ψηφίζουν (για τις εικόνες στα νέα χαρτονομίσματα) Trompe-L’œil (ένας κρυμμένος κόσμος σκέλεθρων) Solarpunk (μουσική) Η Shell κερδίζει (από τον πόλεμο) Ένας ερημίτης (στις κατακόμβες του Παρισιού) Καρλ Γιουνγκ και συγχρονικότητα (ο μυστικισμός των συμπτώσεων) Ο νεοναζισμός στις ΗΠΑ (βίντεο) Maxfield Parrish (μαγευτική τέχνη) Περίπλοκοι χαρακτήρες (σε Howard, Grell, Wolfe, Dostoevsky) Ars Notoria (και η Άμεση Γνώση) LinX (έρχονται πολλά ακόμα)