Γενικό Λύκειο > Διερμηνευτής της ΓΛΩΣΣΑΣ

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

<< < (4/4)

ilias_s:

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

--- Τέλος παράθεσης ---

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

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

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, είμαι φουλ υπέρ της επικείμενης αλλαγής.. αν και επιφυλακτικός για το που θα πάει το πράγμα. Είδομεν.

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)
ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ
--- Τέλος κώδικα ---

Πλοήγηση

[0] Λίστα μηνυμάτων

[*] Προηγούμενη σελίδα

Μετάβαση στην πλήρη έκδοση