User Tools

Site Tools


qna:c:lib:stdlib:seed-time

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
qna:c:lib:stdlib:seed-time [2021/03/12 10:03]
xallos
qna:c:lib:stdlib:seed-time [2021/03/12 10:19] (current)
xallos
Line 7: Line 7:
 Αυτό φυσικά δεν ταιριάζει με τον σκοπό να είναι τα αποτελέσματα όσο πιο τυχαία γίνεται. Έτσι θα πρέπει να δωθεί ως παράμετρος στην ''**srand**'' ένας αριθμός που είναι διαφορετικός κάθε φορά που εκτελείται το πρόγραμμά μας. Αυτό φυσικά δεν ταιριάζει με τον σκοπό να είναι τα αποτελέσματα όσο πιο τυχαία γίνεται. Έτσι θα πρέπει να δωθεί ως παράμετρος στην ''**srand**'' ένας αριθμός που είναι διαφορετικός κάθε φορά που εκτελείται το πρόγραμμά μας.
  
-Ένας καλός υποψήφιος για αυτή τη δουλειά είναι η χρονική στιγμή κατά την οποία ξεκινά η εκτέλεση του προγράμματος. Έτσι θα χρησιμοποιήσουμε τη συνάρτηση ''**time(NULL)**'' ( ή ''**time(0)**''), η οποία επιστρέφει τον αριθμό των δευτερολέπτων που έχουν περάσει μέχρι τη στιγμή που καλείται, μετρώντας από την 1/1/1970. Άρα σε κάθε εκτέλεση είναι διαφορετική η τιμή αυτή.+Ένας καλός υποψήφιος για αυτή τη δουλειά είναι η χρονική στιγμή κατά την οποία ξεκινά η εκτέλεση του προγράμματος. Έτσι θα χρησιμοποιήσουμε τη συνάρτηση ''**time(NULL)**'' ( ή ''**time(0)**'' ), η οποία επιστρέφει τον αριθμό των δευτερολέπτων που έχουν περάσει μέχρι τη στιγμή που καλείται, μετρώντας από την 1/1/1970. Άρα σε κάθε εκτέλεση είναι διαφορετική η τιμή αυτή. Μπορείτε να δείτε περισσότερα στη σελίδα:\\ 
 +[[https://www.tutorialspoint.com/c_standard_library/c_function_time.htm]]
  
 Άρα καλή πρακτική είναι στην αρχή κάθε προγράμματος που θα χρησιμοποιήσει την ''**rand**'' να μπαίνει ο παρακάτω κώδικας που ορίζει το seed (τον σπόρο). Άρα καλή πρακτική είναι στην αρχή κάθε προγράμματος που θα χρησιμοποιήσει την ''**rand**'' να μπαίνει ο παρακάτω κώδικας που ορίζει το seed (τον σπόρο).
Line 17: Line 18:
 ''**srand( time( 0 ) );**'' ''**srand( time( 0 ) );**''
  
-Για να χρησιμοποιήσετε την ''**time**'' θα πρέπει να κάνετε ''**__#include <time.h>__**'' ενώ εάν έχετε χρησιμοποιήσει τη γραφή με το ''**NULL**'', ίσως χρειαστεί να κάνετε και ''**__#include <stdlib.h>__**''.+<WRAP info>Για να χρησιμοποιήσετε την ''**time**'' θα πρέπει να κάνετε ''**__#include <time.h>__**'' ενώ εάν έχετε χρησιμοποιήσει τη γραφή με το ''**NULL**'', ίσως χρειαστεί να κάνετε και ''**__#include <stdlib.h>__**''.</WRAP>
  
 <WRAP important>**ΠΡΟΣΟΧΗ!** Η ''**srand**'' θα πρέπει να καλείται __μία φορά πριν την πρώτη χρήση της ''**rand**''__ στην αρχή του κώδικα - καλύτερα να είναι μία από τις πρώτες εντολές της ''**main**'' - και όχι κάθε φορά που χρησιμοποιείται η ''**rand**''. Δείτε και αυτό το σχετικό άρθρο:\\ <WRAP important>**ΠΡΟΣΟΧΗ!** Η ''**srand**'' θα πρέπει να καλείται __μία φορά πριν την πρώτη χρήση της ''**rand**''__ στην αρχή του κώδικα - καλύτερα να είναι μία από τις πρώτες εντολές της ''**main**'' - και όχι κάθε φορά που χρησιμοποιείται η ''**rand**''. Δείτε και αυτό το σχετικό άρθρο:\\
 [[https://stackoverflow.com/questions/7343833/srand-why-call-it-only-once]]</WRAP> [[https://stackoverflow.com/questions/7343833/srand-why-call-it-only-once]]</WRAP>
qna/c/lib/stdlib/seed-time.1615543402.txt.gz · Last modified: 2021/03/12 10:03 by xallos