====== Η srand ====== Ο σκοπός της ''**srand**'' είναι να παρέχει έναν αρχικό σπόρο (seed) στο σύστημα παραγωγής ψευδοτυχαίων αριθμών. Δέχεται μία παράμετρο (που είναι unsigned int) την οποία χρησιμοποιεί για να __καθορίσει την ακολουθία των ψευδοτυχαίων αριθμών__ που παράγονται από τις κλήσεις της ''**rand**'' από εκείνη τη στιγμή και μετά. Δηλαδή για μία οποιαδήποτε δεδομένη τιμή του σπόρου, __**η ακολουθία** των αποτελεσμάτων που δίνουν διαδοχικές κλήσεις στη συνάρτηση ''**rand**'' (ενώ διαφέρουν από τη μία κλήση στην άλλη), **θα είναι πάντα η ίδια**__. Έτσι κάθε φορά που θα εκτελείται ο κώδικας, θα προκύπτουν τα ίδια αποτελέσματα. Αυτό φυσικά δεν ταιριάζει με τον σκοπό να είναι τα αποτελέσματα όσο πιο τυχαία γίνεται. Έτσι θα πρέπει να δωθεί ως παράμετρος στην ''**srand**'' ένας αριθμός που είναι διαφορετικός κάθε φορά που εκτελείται το πρόγραμμά μας. Ένας καλός υποψήφιος για αυτή τη δουλειά είναι η χρονική στιγμή κατά την οποία ξεκινά η εκτέλεση του προγράμματος. Έτσι θα χρησιμοποιήσουμε τη συνάρτηση ''**time(NULL)**'' ( ή ''**time(0)**'' ), η οποία επιστρέφει τον αριθμό των δευτερολέπτων που έχουν περάσει μέχρι τη στιγμή που καλείται, μετρώντας από την 1/1/1970. Άρα σε κάθε εκτέλεση είναι διαφορετική η τιμή αυτή. Μπορείτε να δείτε περισσότερα στη σελίδα:\\ [[https://www.tutorialspoint.com/c_standard_library/c_function_time.htm]] Άρα καλή πρακτική είναι στην αρχή κάθε προγράμματος που θα χρησιμοποιήσει την ''**rand**'' να μπαίνει ο παρακάτω κώδικας που ορίζει το seed (τον σπόρο). ''**srand( time( NULL ) );**'' ή ''**srand( time( 0 ) );**'' Για να χρησιμοποιήσετε την ''**time**'' θα πρέπει να κάνετε ''**__#include __**'' ενώ εάν έχετε χρησιμοποιήσει τη γραφή με το ''**NULL**'', ίσως χρειαστεί να κάνετε και ''**__#include __**''. **ΠΡΟΣΟΧΗ!** Η ''**srand**'' θα πρέπει να καλείται __μία φορά πριν την πρώτη χρήση της ''**rand**''__ στην αρχή του κώδικα - καλύτερα να είναι μία από τις πρώτες εντολές της ''**main**'' - και όχι κάθε φορά που χρησιμοποιείται η ''**rand**''. Δείτε και αυτό το σχετικό άρθρο:\\ [[https://stackoverflow.com/questions/7343833/srand-why-call-it-only-once]]