Title: [Δομημένος Προγραμ.] Ερώτηση πάνω στη rand( ) Post by: Emfanever on April 23, 2008, 17:50:41 pm Πειραματιζόμουν σήμερα με τη rand( ) και πρόσεξα τα εξής:
'Εφτιαξα αρχικά αυτό το πρόγραμμα: Code: #include <stdio.h> 16596 55260 121535 188292 222272 238498 241478 313367 345274 405776 Δλδ, κάθε φορά μετά από 16596 επαναλήψεις η rand( ) δίνει τον αριθμό 500. Άρα υπέθεσα ότι η rand( ) βγάζει τους αριθμούς με μια συγκεκριμένη σειρά και όχι τόσο τυχαία. Στη συνέχεια έφτιαξα αυτό το πρόγραμμα Code: #include <stdio.h> και όπως περίμενα έβγαλε σαν αποτέλεσμα τον αριθμό 500. Και τελικά με αυτό Code: #include <stdio.h> είδα ότι κάθε φορά που τρέχει η rand( ) για πρώτη φορά δίνει τον αριθμό 346, αν τρέξει 2η φορά στο ίδιο πρόγραμμα δίνει τον 130 κ.τ.λ. Είναι λογικό αυτό?? Title: Re: [Δομημένος Προγραμ.] Ερώτηση πάνω στη rand( ) Post by: Wanderer on April 23, 2008, 22:08:57 pm Νομίζω ναι. Στηρίζεται σε έναν τύπο η rand() για να παράγει τιμές, για αυτό από ό,τι θυμάμαι από ένα παράδειγμα που είχα δει και χρησιμοποιούσε τη rand(), έτρεχε ένας ατέρμων βρόγχος μέχρι ο χρήστης να πατήσει ένα πλήκτρο. Σε κάθε επανάληψη του βρόγχου, αποδίδονταν μία τιμή στη rand(). Αφού δεν ξέρει τί τιμή θα αποδίδει η rand() αν πατήσει το κουμπί σε π.χ. 2.01 δευτερόλεπτα, πρακτικά η επιλογή θα είναι τυχαία.
Πρέπει να δώσεις ένα τρόπο στη συνάρτηση να παράγει τιμές με τυχαίο (φαινομενικά διότι στην πραγματικότητα δεν είναι τυχαίο, απλά εσύ δεν μπορείς να ξέρεις τί τιμή θα δώσει) τρόπο. Από ό,τι θυμάμαι από το help του borland C++ υπάρχει η εντολή randomize(); που τρέχεις πριν τη rand() και η srand(..). Στην τελευταία μπορείς να δώσεις παράμετρο ctime (πρέπει να κάνεις include το time.h) για να δώσει τιμές με βάση την ένδειξη του ρολογιού του υπολογιστή. |