arduino τυχαίοι αριθμοί

Πως χρησιμοποιούμε συναρτήσεις τυχαίων αριθμών;

Η παραγωγή (ψευδό)τυχαίων αριθμών είναι πολλές φορές χρήσιμη ως πρακτική σε ένα πρόγραμμα ή μία εφαρμογή γενικότερα.

Θα δούμε δύο εντολές που ανήκουν σε αυτή τη κατηγορία ώστε να καταλάβουμε πως λειτουργούν οι τυχαίοι αριθμοί


Συναρτήσεις τυχαίων αριθμών

random()

Η συνάρτηση random() παράγει ψευδοτυχαίους* αριθμούς.

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

Σύνταξη

Η συνάρτηση random() μπορεί να χρησιμοποιηθεί με δύο τρόπους.

random(μέγιστο)

μέγιστο: Είναι ένα όρισμα αριθμού όπου χρησιμοποιείται ως μέγιστος αριθμός. Η συνάρτηση πάντα θα επιστρέφει μία τιμή μικρότερη από το όρισμα αυτό.

random(ελάχιστο, μέγιστο)

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

Παράδειγμα κώδικα

void start()
{
Serial.begin(115200); // στην παρακολούθηση σειριακής βάλτε την ταχύτητα 115200
}
void loop()
{
  // εκτύπωση ενός τυχαίου αριθμού από το 0 έως το 49 
  randomNumber = random(300); 
  Serial.println(randomNumber); 
  delay(1000); // καθυστέρηση 1 δευτερολέπτου
}

random(30)

Θα επιστρέφει πάντα έναν τυχαίο αριθμό <30.

Ο τύπος που μπορείτε να χρησιμοποιήσετε ως μέγιστο είναι τύπου long ο οποίος είναι 32 bit – 2,147,483,647 αν βάλετε μεγαλύτερο αριθμός ως όρισμα στην συνάρτηση δεν θα εμφανίσει κάποιο σφάλμα, όμως κατά την εκτέλεση του προγράμματος στην περίπτωση που παραχθεί αριθμός μεγαλύτερος από 2,147,483,647 θα έχετε μη αναμενόμενα αποτελέσματα. Ο αριθμός επιστρέφεται σε μορφή double (πραγματικός διπλής ακρίβειας), ενώ το όρισμα είναι ένας αριθμός τύπου float.

randomSeed()

Η συνάρτηση randomSeed() δέχεται ένα όρισμα και επιστρέφει μία σπορά για την αρχικοποίηση της γεννήτριας. Ο αριθμός αυτός δημιουργεί απρόβλεπτα αποτελέσματα και χρησιμοποιείται με ένα όρισμα το οποίο μπορεί να είναι ένα χρονικό στιγμιότυπο ή η μία αναλογική είσοδος η οποία δεν είναι ίδια ή παρουσιάζει μία τυχαιότητα. Ο υπολογιστής όταν παράγει τυχαίους αριθμούς το κάνει βάση αλγορίθμου. Για να έχουμε πραγματικά τυχαίους αριθμούς θα πρέπει να έχουμε μία σπορά η οποία θα προσδιορίζεται από έναν ή περισσότερους παράγοντες όπως πχ, καιρικά φαινόμενα, ένταση φωτός, ανέμου και άλλες παραμέτρους που δεν είναι εφικτό ή είναι πολύ δύσκολο να υπολογιστούν.


Σύνταξη

randomSeed(x)

x: ένας τυχαίος αριθμός ο οποίος είναι η σπορά (seed) για την παραγωγή τυχαίων αριθμών. Προσοχή, δεν έχει νόημα να βάλετε έναν σταθερό αριθμό ως σπορά γιατί μεταξύ δύο ίδιων στιγμών θα παίρνετε πάντα το ίδιο αποτέλεσμα στους τυχαίους αριθμούς.

Παράδειγμα

void start()
{
  Serial.begin(115200); // στην παρακολούθηση σειριακής βάλτε την ταχύτητα 115200
  seed = randomSeed(analogRead(A0));
} 
void loop() 
{
// εκτύπωση ενός τυχαίου αριθμού από το 0 έως το 49 
randomNumber = random(300); 
Serial.println(randomNumber); 
delay(1000); // καθυστέρηση 1 δευτερολέπτου
}
Επιστροφή στη λίστα εντολών
Δεκέμβριος 24, 2018

0 Απαντήσεις στο "arduino τυχαίοι αριθμοί"

    Αφήστε ένα μήνυμα

    Η ηλ. διεύθυνση σας δεν δημοσιεύεται. Τα υποχρεωτικά πεδία σημειώνονται με *

    Σχεδιασμός © GetCert. Με επιφύλαξη παντός δικαιώματος.