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

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

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

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

Θα δείξει...

 

 

Επίσης . . .

Βιβλιοκριτική: Imaginary Worlds του Lin Carter


Έχοντας διαβάσει (και σχολιάσει) το Wizardry and Wild Romance του Michael Moorcock, είχα κάνει όρεξη να προχωρήσω σε κάτι παρόμοιο· κι αφού κι ο ίδιος ο Moorcock προτείνει το Imaginary Worlds, προχώρησα προς τα εκεί.

Είναι κι αυτό, φυσικά, μια πραγματεία για τη φανταστική λογοτεχνία, αλλά, παρότι έχει ομοιότητες με το Wizardry and Wild Romance, δεν είναι το ίδιο πράγμα. Ο Moorcock κρίνει, κυρίως, την εποχή του· ο Lin Carter μιλά πιο διαχρονικά και πιο ιστορικά (αν και την κρίνει, εν μέρει, και την εποχή του σ’ένα σημείο). Ξεκινά, μάλιστα, διευκρινίζοντας τι εννοεί λέγοντας «φανταστική λογοτεχνία» – fantasy – ώστε να μην υπάρχουν παρεξηγήσεις:

But what I mean by the word "fantasy" is a narrative of marvels that belong to neither the scientific nor the supernatural. The essence of this sort of story can be summed up in. one word: magic. A fantasy is a book or story, then, in which magic really works-not a fairy­ tale, not a story written for children, like Peter Pan or The Wizard of Oz, but a work of fiction written for adults-a story which challenges the mind, which sets it working.

Και, για να είμαι ειλικρινής, συμφωνώ απόλυτα με αυτό τον ορισμό. Το ίδιο εννοώ κι εγώ, συνήθως, όταν λέω «φανταστική λογοτεχνία».

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

 

Επιλογές Απριλίου (8/4)


~Γκράφιτι από τη νιότη μας & Πώς να σταματάς το κινητό σου απ’το να σε παρακολουθεί & KillerTools & Οι αγορές που ποντάρουν στις καταστροφές & Τα «παράνομα» τραπεζικά δίκτυα & Ένας μαγευτικός κήπος στην Τοσκάνη φτιαγμένος στην Αναγέννηση & Tadami Yamada (παράξενα εξώφυλλα) & Rubáiyát του RS Sherriffs (παραμυθένιες εικονογραφήσεις) & Histoires Prodigieuses (1559 – Pierre Boaistuau) & Olaf Hajek (μαγικορεαλιστικοί πίνακες) & Ψυχεδελικές οντότητες χωρίς επιστημονική εξήγηση & Θαλάσσια τέρατα & A Pictorial History of Horror Stories – 200 Years of Spine Chilling Illustrations from the Pulp Magazines (1985) & Το θαλάσσιο ερπετό του Gloucester & Ken Barr (τέχνη) & Οι εικονογραφήσεις Ðông Hồ & Το πρώτο περιοδικό φαντασίας και τρόμου & άλλα πολλά στο LinX~

 

Φανταστική Λεξιπλασία


Κάτι περισσότερο από ένας σχολιασμός για το Imaginary Worlds του Lin Carter

Αυτές τις μέρες διάβαζα το Imaginary Worlds του Lin Carter, το οποίο είναι ένας σχολιασμός για τη φανταστική λογοτεχνία. Ο Lin Carter ήταν ένας αρκετά γνωστός συγγραφέας φαντασίας – καλτ συγγραφέα, θα τον έλεγα – και δεν θα πω τίποτ’ άλλο γι’αυτόν (μη θέλοντας να μιμηθώ τον ίδιο στις παρουσιάσεις του μέσα στο Imaginary Worlds)· για περισσότερα, μπορείτε να τον τσεκάρετε στη Wikipedia. Το 2022 είχα διαβάσει το πρώτο βιβλίο του από τη σειρά με τον Thongor, και ήταν τόσο χάλια που δεν διάβασα τίποτα παραπέρα σε αυτή τη σειρά. Το 2023, όμως, διάβασα μια άλλη σειρά που έχει γράψει, το Gondwane Epic, η οποία ήταν πολύ καλή, και έχει γίνει από τις αγαπημένες μου, και θέλω κάποτε να την ξαναδιαβάσω. (Ναι, ήταν τόσο καλή.)

Τώρα διάβαζα το Imaginary Worlds επειδή πήρα φόρα μετά από το Wizardry and Wild Romance: A Study of Epic Fantasy, του Moorcock, το οποίο διάβασα πρόσφατα (και σχολίασα). Δε θα πω κάτι περισσότερο για το Imaginary Worlds εδώ· απλώς θέλω να σχολιάσω μερικά πράγματα που γράφει ο Lin Carter σε αυτό το βιβλίο σχετικά με τη δημιουργία φανταστικών ονομάτων. Γιατί πιστεύω ότι έχει ενδιαφέρον.

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

Αλλά ας τα πάρουμε τα πράγματα με τη σειρά.

Αναφέρομαι στο Κεφάλαιο 10, A Local Habitation and a Name.

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