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

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

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

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 χρόνια σε αυτά.
Δυστυχώς δεν έχω πια ελεύθερο χρόνο για τέτοια!  :)
Κομπλε. Ευχαριστώ. 
Μερεντίτης Νικόλαος
Πληροφορικός