Coding for KidsCoding for Kids
Δημιουργικά ΕπίπεδαΠροκλήσειςΟδηγός Εκπαιδευτικού
Ψηφίστε για λειτουργίες
Προχωρημένο Μάθημα Ανάπτυξης σε Python
Κεφάλαιο
>
Επίπεδο

Μαθηματικές Ενότητες
Τυχαία Ενότητα

Στόχος

Διεξάγετε προσομοιώσεις και δοκιμές για να προετοιμαστείτε για τυχόν σφάλματα και καθυστερήσεις κατά την κατασκευή της γεωργικής γης χρησιμοποιώντας το module random.

Διασχίζοντας το παράρτημα υπάρχει ένα γραφείο που χειρίζεται κάποια διοικητικά καθήκοντα, ασχολούμενο με την επεξεργασία εγγράφων σχετικά με τη μεταφορά, τη στέγαση και τη λογιστική για την κατασκευή. Θα ήταν καλή ιδέα να εκτελέσετε κάποια σενάρια χρησιμοποιώντας τα διαθέσιμα δεδομένα για να υπολογίσετε τις καθυστερήσεις και τις αποτυχίες εξοπλισμού. Για να σας βοηθήσουμε σε αυτό, έχουμε το module random, ενεργοποιούμενο με το import random .

Το module χρησιμοποιείται για τη δημιουργία τυχαίων εξόδων σε διάφορα επίπεδα, επιτρέποντάς σας να εκτελείτε προσομοιώσεις ή να προσθέτετε τυχαία στοιχεία στους υπολογισμούς/ασκήσεις σας. Για τους σκοπούς μας θα χρησιμοποιήσουμε τις ακόλουθες συναρτήσεις:

  • random.seed(): Ορίζει τον σπόρο για την τυχαία δημιουργία, δέχεται ένα όρισμα που είναι ο αριθμός του σπόρου που θέλετε να χρησιμοποιήσετε. Αυτό σημαίνει ότι οποιαδήποτε τυχαία συνάρτηση χρησιμοποιείται με έναν δεδομένο σπόρο θα επιστρέφει τα ίδια αποτελέσματα κάθε φορά που χρησιμοποιείται. Χρησιμοποιείται για να ασκήσει κάποιος έλεγχο στην τυχαία δημιουργία και να μπορέσετε να αναδημιουργήσετε ορισμένα αποτελέσματα.
  • random.random(): Επιστρέφει έναν τυχαίο δεκαδικό αριθμό μεταξύ του 0 και 1.
  • random.randint(): Δέχεται δύο (2) ορίσματα, δημιουργεί έναν αριθμό μεταξύ των δύο ορισμάτων, συμπεριλαμβανομένων και των ίδιων των αριθμών. Το αποτέλεσμα επιστρέφεται ως ακέραιος αριθμός.
  • random.uniform(): Όμοιο με την προηγούμενη συνάρτηση αλλά επιστρέφει έναν τυχαίο δεκαδικό αριθμό αντί για ακέραιο.
  • random.triangular(): Όμοιο με την προηγούμενη συνάρτηση αλλά έχει ένα επιπλέον όρισμα, ως τροποποιητή, που ονομάζεται mode. Η τιμή του mode πρέπει να είναι ένας αριθμός μεταξύ των δύο αριθμών στο τυχαίο εύρος. Ο τυχαίος αριθμός που παράγεται θα είναι στατιστικά πιο κοντά στο mode παρά ένας καθαρά τυχαίος αριθμός μεταξύ των δύο πρώτων ορισμάτων.
  • random.choice(): Δέχεται μια λίστα ως όρισμα, επιλέγει τυχαία ένα (1) στοιχείο από τη λίστα.
  • random.choices(): Δημιουργεί μια τυχαία λίστα δείγματος από μια άλλη λίστα, δέχεται τρία (3) ορίσματα: μια λίστα από την οποία θέλετε να αντλήσετε δείγματα, μια άλλη λίστα με τα βάρη που θα αποδίδετε σε κάθε στοιχείο της λίστας και τέλος μια μεταβλητή με όνομα k στην οποία μπορείτε να αναθέσετε μια τιμή που καθορίζει πόσα δείγματα θέλετε να πάρετε από τη λίστα. Ο αριθμός των δειγμάτων μπορεί να είναι μεγαλύτερος από το μέγεθος της λίστας καθώς θα δημιουργήσει επαναλήψεις βάσει των ορισμένων βαρών.
  • random.shuffle(): Δέχεται μια λίστα ως όρισμα και την ανακατεύει τυχαία.
  • random.sample(): Δέχεται δύο ορίσματα, μια λίστα από την οποία θα αντλήσετε δείγματα και τον αριθμό των δειγμάτων που θέλετε να πάρετε. Μία απλοποιημένη έκδοση της random.choices() .

Για να ξεκινήσετε, περπατήστε μέχρι το σημείο X με το φως και στρέψτε προς το γραφείο, χρησιμοποιήστε τη συνάρτηση read() για να διαβάσετε τη σημείωση και να εντοπίσετε τα σημεία δεδομένων που χρειάζονται για να τρέξετε μια προσομοίωση με κάποια τυχαία διακύμανση. Θα εκτελέσουμε μια προσομοίωση αποτυχίας εξοπλισμού, όπου η σημείωση θα σας ενημερώσει ποιο seed να χρησιμοποιήσετε για την τυχαία δημιουργία καθώς και ποια λίστα θα χρησιμοποιηθεί για τη δειγματοληψία. Χρησιμοποιήστε τη συνάρτηση random.seed() και εισάγετε την τιμή που παρέχεται στη σημείωση.

Περπατήστε μέχρι το σκοτεινό σημείο X πάνω από το μπλε χαλί και στρέψτε προς το γραφείο, έχουμε μια σταθερά λίστα με το όνομα sectors που περιέχει τις περιοχές της γεωργικής γης που περιγράφηκαν στη προηγούμενη σημείωση. Δημιουργήστε μια μεταβλητή με το όνομα selection για να αποθηκεύσετε την τιμή της random.choice(), χρησιμοποιώντας τη λίστα sectors για να αντλήσετε ένα δείγμα, όπως το εξής: selection = random.choice(sectors). Δημιουργήστε μια επιπλέον μεταβλητή με το όνομα delay και αποθηκεύστε την τιμή της random.random() για να προσομοιώσετε περιθώρια σφάλματος που προκαλούνται από καθυστερήσεις.

Δημιουργήστε ακόμα μία μεταβλητή με το όνομα defect και αποθηκεύστε την τιμή της random.randint() για να δημιουργήσετε ένα ποσοστό πιθανής αποτυχίας εξοπλισμού. Δώστε ως ορίσματα 0 και 15 για να δημιουργηθεί ένα ποσοστό μεταξύ αυτών των δύο αριθμών. Μόλις έχουν ρυθμιστεί οι μεταβλητές selection, delay και defect, χρησιμοποιήστε την προ-γραμμένη συνάρτηση write() με αυτές τις τρεις (3) μεταβλητές με αυτή τη σειρά, για να καταγράψετε τα σημεία δεδομένων που μπορούν να χρησιμοποιηθούν για τον έλεγχο πιθανών προβλημάτων στην κατασκευή.

Περπατήστε μέχρι το χρυσό σημείο X και χρησιμοποιήστε τη συνάρτηση read() για να συνεχίσετε τις προβλέψεις, καθώς τα δεδομένα στη σημείωση θα περιέχουν υλικά, ποσοτήτες και δεδομένα δειγματοληψίας. Θα εκτελέσουμε μια μεγαλύτερη προσομοίωση χρησιμοποιώντας τα δεδομένα της σημείωσης, συμπεριλαμβανομένης μιας σταθερής λίστας με το όνομα materials που αποθηκεύει τους τύπους υλικών που αναφέρονται στη σημείωση.

Περπατήστε μέχρι το σκοτεινό σημείο X πάνω από το κόκκινο χαλί και στρέψτε προς το γραφείο. Δημιουργήστε μια λίστα με το όνομα weights και αποθηκεύστε τις τέσσερις (4) αριθμητικές τιμές που υπάρχουν στη σημείωση, οι οποίες αντιστοιχούν στα υλικά με τη σειρά που παρουσιάζονται. Για παράδειγμα: weights = [400, 600 , -insert value-, -insert value-]

Δημιουργήστε μια μεταβλητή με το όνομα simulation και αποθηκεύστε την τιμή της random.choices(), προσθέτοντας τη σταθερή λίστα materials, τη λίστα weights που δημιουργήσατε και μια λίστα με το όνομα k που περιέχει τις μονάδες δειγματοληψίας που αναφέρονται στη σημείωση, όπως το εξής: simulation = random.choices(materials, weights , k = insert sampling units ). Χρησιμοποιήστε τη μεταβλητή simulation με την προ-γραμμένη συνάρτηση write() για να καταγράψετε τα δεδομένα.

Περπατήστε μέχρι το σκοτεινό σημείο X πάνω από το πράσινο χαλί και στρέψτε προς το γραφείο, χρησιμοποιήστε τη συνάρτηση random.shuffle() με τη λίστα simulation που δημιουργήσατε για να την ανακατέψετε, όπως το εξής: random.shuffle(simulation). Αυτό θα ανακατέψει τη λίστα, χωρίς να χρειάζεται να αποθηκεύσετε την τιμή καθώς τροποποιεί τη λίστα απευθείας. Δημιουργήστε μια λίστα με το όνομα sample για να αποθηκεύσετε την τιμή της random.sample(), προσθέτοντας τη λίστα simulation ως πρώτο όρισμα και για το δεύτερο όρισμα, πάρτε ένα δείγμα από 3 τυχαία στοιχεία, όπως το εξής: sample = random.sample(simulation, k=3). Χρησιμοποιήστε τις μεταβλητές simulation και sample με την προ-γραμμένη συνάρτηση write() για να καταγράψετε τα νέα δείγματα.

Τέλος, περπατήστε μέχρι το σκοτεινό σημείο X πάνω από το μωβ χαλί και στρέψτε προς το γραφείο, δημιουργήστε μια μεταβλητή με το όνομα defect και αποθηκεύστε το αποτέλεσμα της random.uniform(), προσθέτοντας τα ορίσματα 3 και 10. Αυτές είναι οι τιμές δειγματοληψίας για την αρχική προσομοίωση και το δείγμα που ελήφθη, και θα τις χρησιμοποιήσουμε για να δημιουργήσουμε πιθανά περιθώρια αποτυχίας εξοπλισμού από το δείγμα που πήραμε.

Δημιουργήστε μια μεταβλητή με το όνομα losses και αποθηκεύστε την τιμή της random.triangular(), προσθέτοντας τις τιμές 200, 600 και 400. Αυτές είναι οι αριθμητικές τιμές υλικών που αναφέρονται στη προηγούμενη σημείωση, συγκεκριμένα ο χαμηλότερος, ο υψηλότερος και η τιμή που βρίσκεται πιο κοντά στο μέσο όρο. Αυτό μας επιτρέπει να πάρουμε μια τριγωνική τυχαία τιμή βασιζόμενοι στον αριθμό των υλικών που χρησιμοποιήθηκαν στην προσομοίωση. Χρησιμοποιήστε τις τιμές defect και losses με την προ-γραμμένη συνάρτηση write() για να λάβετε αποτελέσματα και να ολοκληρώσετε το επίπεδο.

Βιβλίο Κώδικα