Προς το περιεχόμενο

απορία εντολής στη c


stefanos59

Προτεινόμενες αναρτήσεις

Δημοσ.

καλησπερα εχω την πααρκατω συναρτηση

>int random(void )
{
srand(time(NULL));
return (1+rand()% 10);//paragwgi arithmou apo to 1 ews to 10
}

θα ηθελα να ρωτησω τι κανει η εντολη

srand(time(NULL));

Δημοσ.

δεν ξέρω για την srand φίλε μου πάντως η παραγωγή τυχαίου μέχρι το 10 δεν γίνεται με τη rand(10) ;

 

Διάβασε καλύτερα. Δεν είδα πουθενά rand(10) ;

 

καλησπερα εχω την πααρκατω συναρτηση

>int random(void )
{
srand(time(NULL));
return (1+rand()% 10);//paragwgi arithmou apo to 1 ews to 10
}

θα ηθελα να ρωτησω τι κανει η εντολη

srand(time(NULL));

 

Η rand παίρνει σαν "σημείο εκκίνησης" έναν αριθμό (από εκεί που θα ξεκινήσει η ψευδοτυχαία ακολουθία σου με αριθμούς και περίοδο τουλάχιστον 2^32, σύμφωνα με ό,τι λέει η IEEE για την rand).

 

Αυτός ο αριθμός είναι το "0" στον δικό σου κώδικα.

 

 

Παραπάνω πληροφορίες εδώ

Δημοσ.

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

Η rand στον υπολογιστή βασίζεται σε έναν αλγόριθμο ψευτοτυχαίων αριθμών. Αυτό σημαίνει ότι με βάση τον σπόρο (seed) παράγεται η ακολουθία τυχαίων αριθμών.

Το time(NULL) δίνει σαν σπόρο στην rand τα δευτερόλεπτα που έχουν περάσει από την 1/1/1970(νομίζω). Κάτι δηλαδή που αλλάζει συνεχώς, για αυτό βγάζει συνέχεια διαφορετικά αποτελέσματα. Αν δοκιμάσεις να το τρέξεις βάζοντας κάθε φορά τον ίδιο σπόρο θα δεις ότι τα "τυχαία" αποτελέσματα της rand() θα είναι πάντα τα ίδια.

 

edit γιατί με πρόλαβαν :P :

Αυτός ο αριθμός είναι το "0" στον δικό σου κώδικα.

Δεν είναι το "0". Είναι το time(NULL) δηλαδή τα δευτερόλεπτα που έχουν περάσει από την 1/1/1970.

Δημοσ.

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

Η rand στον υπολογιστή βασίζεται σε έναν αλγόριθμο ψευτοτυχαίων αριθμών. Αυτό σημαίνει ότι με βάση τον σπόρο (seed) παράγεται η ακολουθία τυχαίων αριθμών.

Το time(NULL) δίνει σαν σπόρο στην rand τα χιλιοστά του δευτερολέπτου που έχουν περάσει από το 1900 (νομίζω). Κάτι δηλαδή που αλλάζει συνεχώς, για αυτό βγάζει συνέχεια διαφορετικά αποτελέσματα. Αν δοκιμάσεις να το τρέξεις βάζοντας κάθε φορά τον ίδιο σπόρο θα δεις ότι τα "τυχαία" αποτελέσματα της rand() θα είναι πάντα τα ίδια.

 

 

δεν δίνει "0"; Χμμ..

 

Λάθος μου, δεν κοίταξα την time.

Δημοσ.

Εγώ απλά να πω πως το καλύτερο είναι να καλείται η srand μια φορά κατά την διάρκεια του προγράμματός σου. Οπότε να μην την έχεις σε συνάρτηση(εκτός της main) όπως εδώ,

αλλά να την καλείς μια φορά όταν αρχίζει το πρόγραμμά σου, στην main.

Δημοσ.

Διάβασε καλύτερα. Δεν είδα πουθενά rand(10) ;

 

Το ερωτηματικό στο τέλος ήταν ερώτηση γι'αυτό δεν το έβαλα κολλητά :P

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...