Το Στέκι των Πληροφορικών

Γενικό Λύκειο => Αλγοριθμική και Προγραμματισμός => Διερμηνευτής της ΓΛΩΣΣΑΣ => Μήνυμα ξεκίνησε από: vassilakis στις 23 Οκτ 2015, 06:18:33 ΜΜ

Τίτλος: Παραγωγή τυχαίων αριθμών στο Διερμηνευτή
Αποστολή από: vassilakis στις 23 Οκτ 2015, 06:18:33 ΜΜ
Πρότεινα στον Άλκη την ενσωμάτωση μιας συνάρτησης παραγωγής τυχαίων αριθμών στο Διερμηνευτή. Παρόλο που δεν είναι στην ύλη της ΑΕΠΠ θα μας έδινε τη δυνατότητα να υλοποιήσουμε πολλές και ενδιαφέρουσες εφαρμογές.

Τι λέτε και οι υπόλοιποι;
Τίτλος: Απ: Παραγωγή τυχαίων αριθμών στο Διερμηνευτή
Αποστολή από: odysseas στις 23 Οκτ 2015, 11:37:54 ΜΜ
Καλά, η δική μου ψήφος μάλλον δεν μετράει γιατί ο vassilakis είναι κουμπάρος μου, αλλά εν πάσει περιπτώσει υποστηρίζω την πρότασή του για να ανεβάσω το thread και να δημιουργήσω την κατάλληλη δυναμική. Έλα ρε Άλκηηη!
Τίτλος: Απ: Παραγωγή τυχαίων αριθμών στο Διερμηνευτή
Αποστολή από: Νίκος Αδαμόπουλος στις 24 Οκτ 2015, 05:09:08 ΜΜ
+1

Έτσι κι αλλιώς είχαμε βάλει σχετικό θέμα στο προτελευταίο επαναληπτικό διαγώνισμα της ΑΕΠΠ.
Τίτλος: Απ: Παραγωγή τυχαίων αριθμών στο Διερμηνευτή
Αποστολή από: bugman στις 26 Οκτ 2015, 04:04:00 ΠΜ
Είχα φτιάξει ένα Master Mind to 2003 στην Γλώσσα...
Και είχα φτιάξει μια συνάρτηση για τυχαίο ακέραιο από ένα διάστημα ακεραίων.

Master Mind (http://www.spinet.gr/glossomatheia/programs/viewtopic.php?f=22&t=60)
Κώδικας [Επιλογή]

ΜΕΤΑΒΛΗΤΕΣ
  ΑΚΕΡΑΙΕΣ:  Α, Ν
....................
ΑΡΧΗ
  Α <-- 12123
..............


ΣΥΝΑΡΤΗΣΗ ΤΥΧΑΙΑ_Τ(ΑΠ, ΕΩΣ):ΑΚΕΡΑΙΑ
ΜΕΤΑΒΛΗΤΕΣ
  ΑΚΕΡΑΙΕΣ: ΑΠ, ΕΩΣ
ΑΡΧΗ
  Ν <-- N + Α DIV 123
  Α <-- Ν + Α MOD 113031
  Ν <-- (Ν MOD 100)*100+(N DIV 100) MOD 100
  ΑΝ ΑΠ<>ΕΩΣ ΤΟΤΕ
    ΤΥΧΑΙΑ_Τ <-- (Ν MOD (ΕΩΣ-ΑΠ+1))+ΑΠ
  ΑΛΛΙΩΣ
    ΤΥΧΑΙΑ_Τ <-- ΑΠ
  ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ
Τίτλος: Απ: Παραγωγή τυχαίων αριθμών στο Διερμηνευτή
Αποστολή από: alkisg στις 26 Οκτ 2015, 08:19:28 ΠΜ
bugman, το παράδειγμα που δίνεις δεν τρέχει σε ΓΛΩΣΣΑ, αφού αυτή δεν υποστηρίζει καθολικές μεταβλητές.
Τίτλος: Απ: Παραγωγή τυχαίων αριθμών στο Διερμηνευτή
Αποστολή από: bugman στις 26 Οκτ 2015, 10:30:42 ΠΜ
Πότε έγινε αυτό; Θα έχω χάσει επεισόδια...Πάντως κάποτε έτρεχε στη Γλωσσομάθεια του Νικολαΐδη.
Τίτλος: Απ: Παραγωγή τυχαίων αριθμών στο Διερμηνευτή
Αποστολή από: akalest0s στις 22 Οκτ 2019, 03:59:45 ΠΜ
Συνάρτηση τυχαίων αριθμών τελικά είχε ενσωματωθεί στον διερμηνευτή, ή όχι;
Τίτλος: Απ: Παραγωγή τυχαίων αριθμών στο Διερμηνευτή
Αποστολή από: alkisg στις 22 Οκτ 2019, 07:40:02 ΠΜ
Τελευταίο compile του Διερμηνευτή είχα κάνει το 2011, οπότε δεν έχει μπει τίποτα από τότε.
Άμα ξαναασχοληθώ να στήσω Windows και Delphi και ξανακάνω compile, θα ανοίξω ένα θέμα για το τι εκκρεμότητες υπάρχουν, ώστε να τις προσθέσω...
Τίτλος: Απ: Παραγωγή τυχαίων αριθμών στο Διερμηνευτή
Αποστολή από: FANBOY_21 στις 24 Οκτ 2019, 01:00:13 ΠΜ
Παράθεση από: alkisg στις 22 Οκτ 2019, 07:40:02 ΠΜ
Άμα ξαναασχοληθώ να στήσω Windows και Delphi και ξανακάνω compile, θα ανοίξω ένα θέμα για το τι εκκρεμότητες υπάρχουν, ώστε να τις προσθέσω...

Χμ, βασικά δεν είμαι και πολύ σίγουρος αν πραγματικά χρειάζεται να μπει τέτοια εντολή, αν "ξαναστηθούν" διάφορα. Αν είναι να γίνει κάτι τέτοιο, προτείνω να γίνει ένα τελείως καινούριο "αριστούργημα" σαν το "εμπλουτισμένο συντακτικό" της τότε ΓλωσσοΜάθειας 8.5 (που τώρα πια μάλλον χρειάζομαι VM με XP για να τη δοκιμάσω... ;D) κατ' επιλογήν. Αυτό που, κατά τη γνώμη μου, δεν πρέπει να γίνει, είναι το μπέρδεμα εντολών εντός και εκτός ύλης, καθώς ο διερμηνευτής αυτός θεωρείται ακόμα "επίσημος" (κι ας περιορίζει π.χ. τη χρήση της ΕΠΙΛΕΞΕ).

Αλλά αυτό είναι ακόμα εικασία, απλά ήθελα να το αναφέρω ώστε να μείνει αν όντως γίνει κάτι. ;)
Τίτλος: Απ: Παραγωγή τυχαίων αριθμών στο Διερμηνευτή
Αποστολή από: ilias_s στις 02 Νοε 2019, 09:35:34 ΠΜ
Αξίζει τον κόπο να γίνει κάτι τέτοιο;

1) Από τη μία καλό θα ήταν να υπάρχει μία τέτοια εντολή (όπως και πληθώρα άλλων).
2) Από την άλλη η εντολή αυτή θα ήταν εκτός ύλης και δε θα περιγράφονταν/χρησιμοποιούνταν πουθενά στα βιβλία.
3) Τέλος, έχει ανακοινωθεί πως προετοιμαζόνται στο ΙΕΠ για αναμόρφωση όλου το ΠΣ της πληροφορικής σε όλες της βαθμίδες, κάτι που πιθανώς θα συμπαρασύρει λίγο-πολύ και τη ΓΛΩΣΣΑ.

Αν ήταν να εμπλουτιστεί η ΓΛΩΣΣΑ θα μπορούσαμε να προτείνουμε 10άδες χρήσιμα πράγματα. Προσωπικά αρκούμαι στο εργαλείο που υιοθέτησε το υπουργείο (κατόπιν εορτής) που υλοποιεί τη ΓΛΩΣΣΑ με όλα τα θετικά και τα ΑΡΝΗΤΙΚΑ της. Αν είναι να διορθωθεί (η ΓΛΩΣΣΑ), ας το αποφασίσει το ίδιο Υπουργείο και ας κινήσει τα νήματα να το κάνει. Θα ασχοληθεί πάλι κάποιος "ιδιώτης" και μάλιστα 1-2 χρόνια πριν την επικείμενη αλλαγή;

Δε μπορώ να βλέπω τους υπαλλήλους να διορθώνουν μονίμως τις "πατάτες" της διοίκησης και σε ανώτερο επίπεδο να τα βρίσκουμε "όλα καλά"!!! Αυτή είναι πρωτίστως δουλειά του Υπουργείου και του ΙΕΠ. Σωστά;
Τίτλος: Απ: Παραγωγή τυχαίων αριθμών στο Διερμηνευτή
Αποστολή από: George Eco στις 02 Νοε 2019, 11:10:10 ΜΜ
Παράθεση από: vassilakis στις 23 Οκτ 2015, 06:18:33 ΜΜ
Πρότεινα στον Άλκη την ενσωμάτωση μιας συνάρτησης παραγωγής τυχαίων αριθμών στο Διερμηνευτή. Παρόλο που δεν είναι στην ύλη της ΑΕΠΠ θα μας έδινε τη δυνατότητα να υλοποιήσουμε πολλές και ενδιαφέρουσες εφαρμογές.
Τι λέτε και οι υπόλοιποι;

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

Τίτλος: Απ: Παραγωγή τυχαίων αριθμών στο Διερμηνευτή
Αποστολή από: FANBOY_21 στις 03 Νοε 2019, 01:59:48 ΠΜ
Παράθεση από: George Eco στις 02 Νοε 2019, 11:10:10 ΜΜ
Εγώ λέω πως δε πρέπει να προτείνετε τέτοια πράγματα Σάββατο βράδυ, γιατί τώρα θα με στοιχειώσει και θα σταματήσω ότι κάνω για να δω αν μπορώ, στο εν λόγω πλαίσιο και με τους εν λόγω περιορισμούς, να φτιάξω μια γεννήτρια ψευδοτυχαίων αριθμών της πλάκας, ώστε όμως να μπορέσετε να κάνετε ότι θέλετε να κάνετε με τους μαθητές σας.

Τετάρτη ήταν!!! ;D Και επίσης, όχι, δεν είναι δυνατό να φτιάξεις τέτοια γεννήτρια χωρίς να παίρνεις το state εκτός από το seed, καθώς δεν υποστηρίζονται static στη ΓΛΩΣΣΑ. Κατά τα άλλα, το θέμα έγκειται στο αν γίνεται να υλοποιηθεί ο αλγόριθμος που "γεννά" τους ψευδοτυχαίους (υπάρχουν πολλοί, αλλά... καλύτερα να μη χρησιμοποιούμε ΓΛΩΣΣΑ για διαφύλαξη εταιρικών μυστικών... ;)) ώστε να μπει σε συνάρτηση.
Τίτλος: Απ: Παραγωγή τυχαίων αριθμών στο Διερμηνευτή
Αποστολή από: George Eco στις 03 Νοε 2019, 02:50:16 ΠΜ
Παράθεση από: FANBOY_21 στις 03 Νοε 2019, 01:59:48 ΠΜ
Τετάρτη ήταν!!! ;D Και επίσης, όχι, δεν είναι δυνατό να φτιάξεις τέτοια γεννήτρια χωρίς να παίρνεις το state εκτός από το seed, καθώς δεν υποστηρίζονται static στη ΓΛΩΣΣΑ. Κατά τα άλλα, το θέμα έγκειται στο αν γίνεται να υλοποιηθεί ο αλγόριθμος που "γεννά" τους ψευδοτυχαίους (υπάρχουν πολλοί, αλλά... καλύτερα να μη χρησιμοποιούμε ΓΛΩΣΣΑ για διαφύλαξη εταιρικών μυστικών... ;)) ώστε να μπει σε συνάρτηση.

Εδώ γελάμε ναι. Φαντάζομαι όμως για διδαχτικούς σκοπούς δε θέλει κανείς ασφαλείς rngs, παίζω εδώ με μία συνάρτηση κι ένα πίνακα να δω τι μπορώ να κάνω.
Τίτλος: Απ: Παραγωγή τυχαίων αριθμών στο Διερμηνευτή
Αποστολή από: George Eco στις 03 Νοε 2019, 03:17:31 ΠΜ
Βγαίνει. Δίνεις με ΔΙΑΔΙΚΑΣΙΑ δύο ακεραίους.
Τους βουτάς σε συνάρτηση και παράγεις ψευδοτυχαία ψηφία δημιουργώντας origin και seed.
Αλλά θα πρέπει να το υλοποιήσεις.
Δοκιμαστικά έκανα μια μπούρδα να δω αν θεωρητικά θα δουλέψει.
Δε βγάζω λευκό θόρυβο με τη καμία ακόμα, αλλά τα πάει καλά για λίγες μεταβλητές που μπορεί να θέλει σε μάθημα κάποιος.
Απλά ντρέπομαι να μοιραστώ το πείραμα, το θεωρώ μίασμα.
Τίτλος: Απ: Παραγωγή τυχαίων αριθμών στο Διερμηνευτή
Αποστολή από: Νίκος Αδαμόπουλος στις 06 Νοε 2019, 04:04:33 ΜΜ
Παράθεση από: ilias_s στις 02 Νοε 2019, 09:35:34 ΠΜ
1) Από τη μία καλό θα ήταν να υπάρχει μία τέτοια εντολή (όπως και πληθώρα άλλων).
2) Από την άλλη η εντολή αυτή θα ήταν εκτός ύλης και δε θα περιγράφονταν/χρησιμοποιούνταν πουθενά στα βιβλία.

Παλιότερα το Στέκι είχε βγάλει επαναληπτικό διαγώνισμα που έδινε έτοιμη μια τέτοια συνάρτηση και περιέγραφε τη χρήση της.
Βλ. εδώ στο Θέμα Γ: https://alkisg.mysch.gr/steki/index.php?topic=5744.0
Τίτλος: Απ: Παραγωγή τυχαίων αριθμών στο Διερμηνευτή
Αποστολή από: ilias_s στις 06 Νοε 2019, 08:42:28 ΜΜ
Παράθεση από: Νίκος Αδαμόπουλος στις 06 Νοε 2019, 04:04:33 ΜΜ
Παλιότερα το Στέκι είχε βγάλει επαναληπτικό διαγώνισμα που έδινε έτοιμη μια τέτοια συνάρτηση και περιέγραφε τη χρήση της.
Βλ. εδώ στο Θέμα Γ: https://alkisg.mysch.gr/steki/index.php?topic=5744.0

Ναι, δεν αντιλέγω πως θα μπορούσε να γίνει απλά τώρα, μετά από 20 χρόνια, και δεδομένου πως στο βιβλίο δε θα συμπεριληφθεί... αξίζει τον κόπο;
Τίτλος: Απ: Παραγωγή τυχαίων αριθμών στο Διερμηνευτή
Αποστολή από: akalest0s στις 07 Νοε 2019, 01:43:15 ΠΜ
Συμφωνώ ότι είναι πολύ αργά για τέτοια ζητήματα, να προστεθούν τώρα. Just to clarify, εγώ ρώτησα αν υπάρχει ήδη στο διερμηνευτή, όχι αν θα το βάλουμε τελικά.
Και μιας και το συζητάμε, υπάρχει κάποια ένδειξη για το πόσο βαθειά θα είναι η αλλαγή, και πότε να την περιμένουμε περίπου; Ρωτάω γιατί κάνω μια (αναγκαστική) επαναδιάρθρωση των σημειώσεών μου, και βλέπω τη (σκληρή) δουλειά μου να πηγαίνει στράφι, αν αλλάξουν τα πάντα σε 1-2 χρόνια...  :'( :'(
Τίτλος: Απ: Παραγωγή τυχαίων αριθμών στο Διερμηνευτή
Αποστολή από: George Eco στις 07 Νοε 2019, 01:45:56 ΠΜ
Παράθεση από: Νίκος Αδαμόπουλος στις 06 Νοε 2019, 04:04:33 ΜΜ
Παλιότερα το Στέκι είχε βγάλει επαναληπτικό διαγώνισμα που έδινε έτοιμη μια τέτοια συνάρτηση και περιέγραφε τη χρήση της.
Βλ. εδώ στο Θέμα Γ: https://alkisg.mysch.gr/steki/index.php?topic=5744.0

ΤΥΧΑΙΟΣ(1,6)

Έτσι το λύνω κι εγώ, το θέμα είναι να φτιάξουμε μία συνάρτηση, που να παίρνει ένα seed κι ένα max, (min είναι πες πάντα το 0 ή το 0.01).
Αν μπορείς να βγάλεις ψευδοτυχαίο πραγματικό ως συνάρτηση, μετά είναι ζήτημα λεπτών να παράξεις μονοψήφιο, διψήφιο, τριψήφιο, ν-ψήφιο ακέραιο, φτιάχνοντας συνάρτηση, που θα καλεί μία ή περισσότερες φορές την rng. Το θέμα είναι, πώς μπορώ να βγάλω ισοκατανεμημένα αποτελέσματα με 1/10 συχνότητα; Δηλαδή 0,1,2,3,4,5,6,7,8,9 κοντά στο 10% έκαστο;
Αν φτιαχτεί το μαθηματικό μοντέλο μετά μπορεί με corrections να κρατάει πλήθος μεταβλητών και να διορθώνεται ad-hoc. Απαίσιο, αλλά θα κάνει τη δουλειά μια χαρά. Δεν είμαι σε φάση να κάτσω να το γράψω, αλλά αν κάποια μέρα έχω χρόνο, είμαι αρκετά τρελός να το κάνω.



Παράθεση από: akalest0s στις 07 Νοε 2019, 01:43:15 ΠΜ
Συμφωνώ ότι είναι πολύ αργά για τέτοια ζητήματα, να προστεθούν τώρα. Just to clarify, εγώ ρώτησα αν υπάρχει ήδη στο διερμηνευτή, όχι αν θα το βάλουμε τελικά.
Και μιας και το συζητάμε, υπάρχει κάποια ένδειξη για το πόσο βαθειά θα είναι η αλλαγή, και πότε να την περιμένουμε περίπου; Ρωτάω γιατί κάνω μια (αναγκαστική) επαναδιάρθρωση των σημειώσεών μου, και βλέπω τη (σκληρή) δουλειά μου να πηγαίνει στράφι, αν αλλάξουν τα πάντα σε 1-2 χρόνια...  :'( :'(

Καλά θα δω τι θα κάνω αλλά δεν υπόσχομαι οκ; Θα είναι εφιάλτης το debug όχι τίποτα άλλο και δυστυχώς με το ίδιο seed θα παίρνεις αναγκαστικά ίδια αποτελέσματα. Θα λυνόταν εύκολα, αν είχα μια getTime() αλλά αφού δεν...
ΥΓ: Καμιά σκληρή δουλειά δε πάει στράφι. Απλά αναπροσαρμόζεται στα νέα δεδομένα, με περισσότερη σκληρή δουλειά. Μη στενοχωριέσαι.
Τίτλος: Απ: Παραγωγή τυχαίων αριθμών στο Διερμηνευτή
Αποστολή από: akalest0s στις 08 Νοε 2019, 04:03:36 ΜΜ
Για να μην δώσω πάλι λάθος εντύπωση  :P, είμαι φουλ υπέρ της επικείμενης αλλαγής.. αν και επιφυλακτικός για το που θα πάει το πράγμα. Είδομεν.
Τίτλος: Απ: Παραγωγή τυχαίων αριθμών στο Διερμηνευτή
Αποστολή από: kouk στις 17 Μαρ 2020, 09:54:40 ΜΜ
PASCAL FUNCTIONS FOR THE GENERATION OF RANDOM NUMBERS 
https://core.ac.uk/download/pdf/82632298.pdf (https://core.ac.uk/download/pdf/82632298.pdf)

Κώδικας [Επιλογή]
ΠΡΟΓΡΑΜΜΑ ask
ΣΤΑΘΕΡΕΣ
  N = 10                                                ! πλήθος τυχαίων αριθμών
  MIN = 1                                                              ! από ...
  MAX = 10                                                            ! μέχρι...
ΜΕΤΑΒΛΗΤΕΣ
  ΑΚΕΡΑΙΕΣ: Seed, i, j, number, A[N]
  ΛΟΓΙΚΕΣ: ok
ΑΡΧΗ
! γεμίζει πίνακα σειριακά με τυχαίους αριθμούς
  Seed <- 70
  ΚΑΛΕΣΕ random(Seed, MIN, MAX, number)
  i <- 1
  A[i] <- number
  ΟΣΟ i < N ΕΠΑΝΑΛΑΒΕ
    ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
      ΚΑΛΕΣΕ random(Seed, MIN, MAX, number)
      ok <- ΑΛΗΘΗΣ
      ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ i
        ΑΝ A[j] = number ΤΟΤΕ
          ok <- ΟΧΙ(ok)
        ΤΕΛΟΣ_ΑΝ
      ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
    ΜΕΧΡΙΣ_ΟΤΟΥ ok
    i <- i + 1
    A[i] <- number
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

  ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ N
    ΓΡΑΨΕ A[i], "  "
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
  ΓΡΑΨΕ
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

ΔΙΑΔΙΚΑΣΙΑ random(Seed, Min, Max, Number)
ΣΤΑΘΕΡΕΣ
  A = 314159269
  C = 453806245
  M = 2147483647
ΜΕΤΑΒΛΗΤΕΣ
  ΑΚΕΡΑΙΕΣ: Seed, Min, Max, Number
ΑΡΧΗ
  Seed <- A*Seed + C
  Seed <- Seed mod M
  Number <- Min + Α_Μ((Max + 1 - Min)*Seed/M)
ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ
Τίτλος: Απ: Παραγωγή τυχαίων αριθμών στο Διερμηνευτή
Αποστολή από: nikolasmer στις 16 Δεκ 2023, 06:58:51 ΜΜ
Κανένα νέο; :)
Τίτλος: Απ: Παραγωγή τυχαίων αριθμών στο Διερμηνευτή
Αποστολή από: alkisg στις 17 Δεκ 2023, 10:01:19 ΠΜ
Ισχύει ακόμα αυτό που έγραψα παραπάνω (https://alkisg.mysch.gr/steki/index.php?msg=87925), θα χρειαστεί πάνω από μήνα για να στήσω Windows, Delphi, και να κάνω update τον κώδικα του Διερμηνευτή για όλες τις αλλαγές που έχουν γίνει τα τελευταία 12 χρόνια σε αυτά.
Δυστυχώς δεν έχω πια ελεύθερο χρόνο για τέτοια!  :)
Τίτλος: Απ: Παραγωγή τυχαίων αριθμών στο Διερμηνευτή
Αποστολή από: nikolasmer στις 17 Δεκ 2023, 12:06:14 ΜΜ
Παράθεση από: alkisg στις 17 Δεκ 2023, 10:01:19 ΠΜΙσχύει ακόμα αυτό που έγραψα παραπάνω (https://alkisg.mysch.gr/steki/index.php?msg=87925), θα χρειαστεί πάνω από μήνα για να στήσω Windows, Delphi, και να κάνω update τον κώδικα του Διερμηνευτή για όλες τις αλλαγές που έχουν γίνει τα τελευταία 12 χρόνια σε αυτά.
Δυστυχώς δεν έχω πια ελεύθερο χρόνο για τέτοια!  :)
Κομπλε. Ευχαριστώ.