Αποστολέας Θέμα: Παραγωγή τυχαίων αριθμών στο Διερμηνευτή  (Αναγνώστηκε 6169 φορές)

vassilakis

  • Θαμώνας
  • ***
  • Μηνύματα: 40
    • Σύλλογος Εκπαιδευτικών Πληροφορικής Χίου
Πρότεινα στον Άλκη την ενσωμάτωση μιας συνάρτησης παραγωγής τυχαίων αριθμών στο Διερμηνευτή. Παρόλο που δεν είναι στην ύλη της ΑΕΠΠ θα μας έδινε τη δυνατότητα να υλοποιήσουμε πολλές και ενδιαφέρουσες εφαρμογές.

Τι λέτε και οι υπόλοιποι;
Βασιλάκης Βασίλης

odysseas

  • Ομάδα διαγωνισμάτων 2011
  • *
  • Μηνύματα: 842
Απ: Παραγωγή τυχαίων αριθμών στο Διερμηνευτή
« Απάντηση #1 στις: 23 Οκτ 2015, 11:37:54 μμ »
Καλά, η δική μου ψήφος μάλλον δεν μετράει γιατί ο vassilakis είναι κουμπάρος μου, αλλά εν πάσει περιπτώσει υποστηρίζω την πρότασή του για να ανεβάσω το thread και να δημιουργήσω την κατάλληλη δυναμική. Έλα ρε Άλκηηη!

Νίκος Αδαμόπουλος

  • Γενικός διαχειριστής
  • *****
  • Μηνύματα: 2814
  • Πύργος Ηλείας
Απ: Παραγωγή τυχαίων αριθμών στο Διερμηνευτή
« Απάντηση #2 στις: 24 Οκτ 2015, 05:09:08 μμ »
+1

Έτσι κι αλλιώς είχαμε βάλει σχετικό θέμα στο προτελευταίο επαναληπτικό διαγώνισμα της ΑΕΠΠ.

bugman

  • Δεινόσαυρος
  • *****
  • Μηνύματα: 513
  • The Bug Eater
    • Πληροφορική Προγραμματισμός
Απ: Παραγωγή τυχαίων αριθμών στο Διερμηνευτή
« Απάντηση #3 στις: 26 Οκτ 2015, 04:04:00 πμ »
Είχα φτιάξει ένα Master Mind to 2003 στην Γλώσσα...
Και είχα φτιάξει μια συνάρτηση για τυχαίο ακέραιο από ένα διάστημα ακεραίων.

Master Mind
Κώδικας: [Επιλογή]
ΜΕΤΑΒΛΗΤΕΣ
  ΑΚΕΡΑΙΕΣ:  Α, Ν
....................
ΑΡΧΗ
  Α <-- 12123
..............


ΣΥΝΑΡΤΗΣΗ ΤΥΧΑΙΑ_Τ(ΑΠ, ΕΩΣ):ΑΚΕΡΑΙΑ
ΜΕΤΑΒΛΗΤΕΣ
  ΑΚΕΡΑΙΕΣ: ΑΠ, ΕΩΣ
ΑΡΧΗ
  Ν <-- N + Α DIV 123
  Α <-- Ν + Α MOD 113031
  Ν <-- (Ν MOD 100)*100+(N DIV 100) MOD 100
  ΑΝ ΑΠ<>ΕΩΣ ΤΟΤΕ
    ΤΥΧΑΙΑ_Τ <-- (Ν MOD (ΕΩΣ-ΑΠ+1))+ΑΠ
  ΑΛΛΙΩΣ
    ΤΥΧΑΙΑ_Τ <-- ΑΠ
  ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ

alkisg

  • Τεχνικός / καθαρίστρια
  • *****
  • Μηνύματα: 5665
    • Ο Διερμηνευτής της ΓΛΩΣΣΑΣ
Απ: Παραγωγή τυχαίων αριθμών στο Διερμηνευτή
« Απάντηση #4 στις: 26 Οκτ 2015, 08:19:28 πμ »
bugman, το παράδειγμα που δίνεις δεν τρέχει σε ΓΛΩΣΣΑ, αφού αυτή δεν υποστηρίζει καθολικές μεταβλητές.

bugman

  • Δεινόσαυρος
  • *****
  • Μηνύματα: 513
  • The Bug Eater
    • Πληροφορική Προγραμματισμός
Απ: Παραγωγή τυχαίων αριθμών στο Διερμηνευτή
« Απάντηση #5 στις: 26 Οκτ 2015, 10:30:42 πμ »
Πότε έγινε αυτό; Θα έχω χάσει επεισόδια...Πάντως κάποτε έτρεχε στη Γλωσσομάθεια του Νικολαΐδη.

akalest0s

  • Δεινόσαυρος
  • *****
  • Μηνύματα: 247
Απ: Παραγωγή τυχαίων αριθμών στο Διερμηνευτή
« Απάντηση #6 στις: 22 Οκτ 2019, 03:59:45 πμ »
Συνάρτηση τυχαίων αριθμών τελικά είχε ενσωματωθεί στον διερμηνευτή, ή όχι;
"Abstraction is not the first stage, but the last stage, in a mathematical development." MK
"I don't want to write about a high level thing, unless I fully understand about a low level thing" DK

alkisg

  • Τεχνικός / καθαρίστρια
  • *****
  • Μηνύματα: 5665
    • Ο Διερμηνευτής της ΓΛΩΣΣΑΣ
Απ: Παραγωγή τυχαίων αριθμών στο Διερμηνευτή
« Απάντηση #7 στις: 22 Οκτ 2019, 07:40:02 πμ »
Τελευταίο compile του Διερμηνευτή είχα κάνει το 2011, οπότε δεν έχει μπει τίποτα από τότε.
Άμα ξαναασχοληθώ να στήσω Windows και Delphi και ξανακάνω compile, θα ανοίξω ένα θέμα για το τι εκκρεμότητες υπάρχουν, ώστε να τις προσθέσω...

FANBOY_21

  • Οπαδός
  • **
  • Μηνύματα: 14
Απ: Παραγωγή τυχαίων αριθμών στο Διερμηνευτή
« Απάντηση #8 στις: 24 Οκτ 2019, 01:00:13 πμ »
Άμα ξαναασχοληθώ να στήσω Windows και Delphi και ξανακάνω compile, θα ανοίξω ένα θέμα για το τι εκκρεμότητες υπάρχουν, ώστε να τις προσθέσω...

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

Αλλά αυτό είναι ακόμα εικασία, απλά ήθελα να το αναφέρω ώστε να μείνει αν όντως γίνει κάτι. ;)

ilias_s

  • ΠΛΗΝΕΤ
  • *
  • Μηνύματα: 423
Απ: Παραγωγή τυχαίων αριθμών στο Διερμηνευτή
« Απάντηση #9 στις: 02 Νοέ 2019, 09:35:34 πμ »
Αξίζει τον κόπο να γίνει κάτι τέτοιο;

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

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

Δε μπορώ να βλέπω τους υπαλλήλους να διορθώνουν μονίμως τις "πατάτες" της διοίκησης και σε ανώτερο επίπεδο να τα βρίσκουμε "όλα καλά"!!! Αυτή είναι πρωτίστως δουλειά του Υπουργείου και του ΙΕΠ. Σωστά;
« Τελευταία τροποποίηση: 02 Νοέ 2019, 06:34:14 μμ από ilias_s »

George Eco

  • Δεινόσαυρος
  • *****
  • Μηνύματα: 315
Απ: Παραγωγή τυχαίων αριθμών στο Διερμηνευτή
« Απάντηση #10 στις: 02 Νοέ 2019, 11:10:10 μμ »
Πρότεινα στον Άλκη την ενσωμάτωση μιας συνάρτησης παραγωγής τυχαίων αριθμών στο Διερμηνευτή. Παρόλο που δεν είναι στην ύλη της ΑΕΠΠ θα μας έδινε τη δυνατότητα να υλοποιήσουμε πολλές και ενδιαφέρουσες εφαρμογές.
Τι λέτε και οι υπόλοιποι;

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


FANBOY_21

  • Οπαδός
  • **
  • Μηνύματα: 14
Απ: Παραγωγή τυχαίων αριθμών στο Διερμηνευτή
« Απάντηση #11 στις: 03 Νοέ 2019, 01:59:48 πμ »
Εγώ λέω πως δε πρέπει να προτείνετε τέτοια πράγματα Σάββατο βράδυ, γιατί τώρα θα με στοιχειώσει και θα σταματήσω ότι κάνω για να δω αν μπορώ, στο εν λόγω πλαίσιο και με τους εν λόγω περιορισμούς, να φτιάξω μια γεννήτρια ψευδοτυχαίων αριθμών της πλάκας, ώστε όμως να μπορέσετε να κάνετε ότι θέλετε να κάνετε με τους μαθητές σας.

Τετάρτη ήταν!!! ;D Και επίσης, όχι, δεν είναι δυνατό να φτιάξεις τέτοια γεννήτρια χωρίς να παίρνεις το state εκτός από το seed, καθώς δεν υποστηρίζονται static στη ΓΛΩΣΣΑ. Κατά τα άλλα, το θέμα έγκειται στο αν γίνεται να υλοποιηθεί ο αλγόριθμος που "γεννά" τους ψευδοτυχαίους (υπάρχουν πολλοί, αλλά... καλύτερα να μη χρησιμοποιούμε ΓΛΩΣΣΑ για διαφύλαξη εταιρικών μυστικών... ;)) ώστε να μπει σε συνάρτηση.

George Eco

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

Εδώ γελάμε ναι. Φαντάζομαι όμως για διδαχτικούς σκοπούς δε θέλει κανείς ασφαλείς rngs, παίζω εδώ με μία συνάρτηση κι ένα πίνακα να δω τι μπορώ να κάνω.

George Eco

  • Δεινόσαυρος
  • *****
  • Μηνύματα: 315
Απ: Παραγωγή τυχαίων αριθμών στο Διερμηνευτή
« Απάντηση #13 στις: 03 Νοέ 2019, 03:17:31 πμ »
Βγαίνει. Δίνεις με ΔΙΑΔΙΚΑΣΙΑ δύο ακεραίους.
Τους βουτάς σε συνάρτηση και παράγεις ψευδοτυχαία ψηφία δημιουργώντας origin και seed.
Αλλά θα πρέπει να το υλοποιήσεις.
Δοκιμαστικά έκανα μια μπούρδα να δω αν θεωρητικά θα δουλέψει.
Δε βγάζω λευκό θόρυβο με τη καμία ακόμα, αλλά τα πάει καλά για λίγες μεταβλητές που μπορεί να θέλει σε μάθημα κάποιος.
Απλά ντρέπομαι να μοιραστώ το πείραμα, το θεωρώ μίασμα.
« Τελευταία τροποποίηση: 03 Νοέ 2019, 03:49:02 πμ από George Eco »

Νίκος Αδαμόπουλος

  • Γενικός διαχειριστής
  • *****
  • Μηνύματα: 2814
  • Πύργος Ηλείας
Απ: Παραγωγή τυχαίων αριθμών στο Διερμηνευτή
« Απάντηση #14 στις: 06 Νοέ 2019, 04:04:33 μμ »
1) Από τη μία καλό θα ήταν να υπάρχει μία τέτοια εντολή (όπως και πληθώρα άλλων).
2) Από την άλλη η εντολή αυτή θα ήταν εκτός ύλης και δε θα περιγράφονταν/χρησιμοποιούνταν πουθενά στα βιβλία.

Παλιότερα το Στέκι είχε βγάλει επαναληπτικό διαγώνισμα που έδινε έτοιμη μια τέτοια συνάρτηση και περιέγραφε τη χρήση της.
Βλ. εδώ στο Θέμα Γ: https://alkisg.mysch.gr/steki/index.php?topic=5744.0

ilias_s

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

Ναι, δεν αντιλέγω πως θα μπορούσε να γίνει απλά τώρα, μετά από 20 χρόνια, και δεδομένου πως στο βιβλίο δε θα συμπεριληφθεί... αξίζει τον κόπο;

akalest0s

  • Δεινόσαυρος
  • *****
  • Μηνύματα: 247
Απ: Παραγωγή τυχαίων αριθμών στο Διερμηνευτή
« Απάντηση #16 στις: 07 Νοέ 2019, 01:43:15 πμ »
Συμφωνώ ότι είναι πολύ αργά για τέτοια ζητήματα, να προστεθούν τώρα. Just to clarify, εγώ ρώτησα αν υπάρχει ήδη στο διερμηνευτή, όχι αν θα το βάλουμε τελικά.
Και μιας και το συζητάμε, υπάρχει κάποια ένδειξη για το πόσο βαθειά θα είναι η αλλαγή, και πότε να την περιμένουμε περίπου; Ρωτάω γιατί κάνω μια (αναγκαστική) επαναδιάρθρωση των σημειώσεών μου, και βλέπω τη (σκληρή) δουλειά μου να πηγαίνει στράφι, αν αλλάξουν τα πάντα σε 1-2 χρόνια...  :'( :'(
"Abstraction is not the first stage, but the last stage, in a mathematical development." MK
"I don't want to write about a high level thing, unless I fully understand about a low level thing" DK

George Eco

  • Δεινόσαυρος
  • *****
  • Μηνύματα: 315
Απ: Παραγωγή τυχαίων αριθμών στο Διερμηνευτή
« Απάντηση #17 στις: 07 Νοέ 2019, 01:45:56 πμ »
Παλιότερα το Στέκι είχε βγάλει επαναληπτικό διαγώνισμα που έδινε έτοιμη μια τέτοια συνάρτηση και περιέγραφε τη χρήση της.
Βλ. εδώ στο Θέμα Γ: 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. Απαίσιο, αλλά θα κάνει τη δουλειά μια χαρά. Δεν είμαι σε φάση να κάτσω να το γράψω, αλλά αν κάποια μέρα έχω χρόνο, είμαι αρκετά τρελός να το κάνω.



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

Καλά θα δω τι θα κάνω αλλά δεν υπόσχομαι οκ; Θα είναι εφιάλτης το debug όχι τίποτα άλλο και δυστυχώς με το ίδιο seed θα παίρνεις αναγκαστικά ίδια αποτελέσματα. Θα λυνόταν εύκολα, αν είχα μια getTime() αλλά αφού δεν...
ΥΓ: Καμιά σκληρή δουλειά δε πάει στράφι. Απλά αναπροσαρμόζεται στα νέα δεδομένα, με περισσότερη σκληρή δουλειά. Μη στενοχωριέσαι.

akalest0s

  • Δεινόσαυρος
  • *****
  • Μηνύματα: 247
Απ: Παραγωγή τυχαίων αριθμών στο Διερμηνευτή
« Απάντηση #18 στις: 08 Νοέ 2019, 04:03:36 μμ »
Για να μην δώσω πάλι λάθος εντύπωση  :P, είμαι φουλ υπέρ της επικείμενης αλλαγής.. αν και επιφυλακτικός για το που θα πάει το πράγμα. Είδομεν.
"Abstraction is not the first stage, but the last stage, in a mathematical development." MK
"I don't want to write about a high level thing, unless I fully understand about a low level thing" DK

kouk

  • Νέος
  • *
  • Μηνύματα: 2
  • Disk 1 of 4166
Απ: Παραγωγή τυχαίων αριθμών στο Διερμηνευτή
« Απάντηση #19 στις: 17 Μάρ 2020, 09:54:40 μμ »
PASCAL FUNCTIONS FOR THE GENERATION OF RANDOM NUMBERS 
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)
ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ