Παραγωγή τυχαίων αριθμών στο Διερμηνευτή

Ξεκίνησε από vassilakis, 23 Οκτ 2015, 06:18:33 ΜΜ

« προηγούμενο - επόμενο »

vassilakis

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

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

odysseas

Καλά, η δική μου ψήφος μάλλον δεν μετράει γιατί ο vassilakis είναι κουμπάρος μου, αλλά εν πάσει περιπτώσει υποστηρίζω την πρότασή του για να ανεβάσω το thread και να δημιουργήσω την κατάλληλη δυναμική. Έλα ρε Άλκηηη!

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

+1

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

bugman

Είχα φτιάξει ένα Master Mind to 2003 στην Γλώσσα...
Και είχα φτιάξει μια συνάρτηση για τυχαίο ακέραιο από ένα διάστημα ακεραίων.

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


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

alkisg

bugman, το παράδειγμα που δίνεις δεν τρέχει σε ΓΛΩΣΣΑ, αφού αυτή δεν υποστηρίζει καθολικές μεταβλητές.

bugman

Πότε έγινε αυτό; Θα έχω χάσει επεισόδια...Πάντως κάποτε έτρεχε στη Γλωσσομάθεια του Νικολαΐδη.

akalest0s

Συνάρτηση τυχαίων αριθμών τελικά είχε ενσωματωθεί στον διερμηνευτή, ή όχι;
"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

Τελευταίο compile του Διερμηνευτή είχα κάνει το 2011, οπότε δεν έχει μπει τίποτα από τότε.
Άμα ξαναασχοληθώ να στήσω Windows και Delphi και ξανακάνω compile, θα ανοίξω ένα θέμα για το τι εκκρεμότητες υπάρχουν, ώστε να τις προσθέσω...

FANBOY_21

Παράθεση από: alkisg στις 22 Οκτ 2019, 07:40:02 ΠΜ
Άμα ξαναασχοληθώ να στήσω Windows και Delphi και ξανακάνω compile, θα ανοίξω ένα θέμα για το τι εκκρεμότητες υπάρχουν, ώστε να τις προσθέσω...

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

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

ilias_s

#9
Αξίζει τον κόπο να γίνει κάτι τέτοιο;

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

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

Δε μπορώ να βλέπω τους υπαλλήλους να διορθώνουν μονίμως τις "πατάτες" της διοίκησης και σε ανώτερο επίπεδο να τα βρίσκουμε "όλα καλά"!!! Αυτή είναι πρωτίστως δουλειά του Υπουργείου και του ΙΕΠ. Σωστά;

George Eco

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

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


FANBOY_21

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

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

George Eco

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

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

George Eco

#13
Βγαίνει. Δίνεις με ΔΙΑΔΙΚΑΣΙΑ δύο ακεραίους.
Τους βουτάς σε συνάρτηση και παράγεις ψευδοτυχαία ψηφία δημιουργώντας origin και seed.
Αλλά θα πρέπει να το υλοποιήσεις.
Δοκιμαστικά έκανα μια μπούρδα να δω αν θεωρητικά θα δουλέψει.
Δε βγάζω λευκό θόρυβο με τη καμία ακόμα, αλλά τα πάει καλά για λίγες μεταβλητές που μπορεί να θέλει σε μάθημα κάποιος.
Απλά ντρέπομαι να μοιραστώ το πείραμα, το θεωρώ μίασμα.

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

Παράθεση από: ilias_s στις 02 Νοε 2019, 09:35:34 ΠΜ
1) Από τη μία καλό θα ήταν να υπάρχει μία τέτοια εντολή (όπως και πληθώρα άλλων).
2) Από την άλλη η εντολή αυτή θα ήταν εκτός ύλης και δε θα περιγράφονταν/χρησιμοποιούνταν πουθενά στα βιβλία.

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

ilias_s

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

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

akalest0s

Συμφωνώ ότι είναι πολύ αργά για τέτοια ζητήματα, να προστεθούν τώρα. 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

Παράθεση από: Νίκος Αδαμόπουλος στις 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

Για να μην δώσω πάλι λάθος εντύπωση  :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

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) 
ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ

nikolasmer

Μερεντίτης Νικόλαος
Πληροφορικός

alkisg

Ισχύει ακόμα αυτό που έγραψα παραπάνω, θα χρειαστεί πάνω από μήνα για να στήσω Windows, Delphi, και να κάνω update τον κώδικα του Διερμηνευτή για όλες τις αλλαγές που έχουν γίνει τα τελευταία 12 χρόνια σε αυτά.
Δυστυχώς δεν έχω πια ελεύθερο χρόνο για τέτοια!  :)

nikolasmer

Παράθεση από: alkisg στις 17 Δεκ 2023, 10:01:19 ΠΜΙσχύει ακόμα αυτό που έγραψα παραπάνω, θα χρειαστεί πάνω από μήνα για να στήσω Windows, Delphi, και να κάνω update τον κώδικα του Διερμηνευτή για όλες τις αλλαγές που έχουν γίνει τα τελευταία 12 χρόνια σε αυτά.
Δυστυχώς δεν έχω πια ελεύθερο χρόνο για τέτοια!  :)
Κομπλε. Ευχαριστώ. 
Μερεντίτης Νικόλαος
Πληροφορικός