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

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

Δημοσ.

Θελω να κάνω μια συνάρτηση που να παράγει αριθμούς τυχαίους απο 0 έως 1. Εχω τον παρακάτω κώδικα όμως κάθε φορά που τον τρέχω μου βγάζει ίδιους αριθμους. πως μπορώ να το κάνω να βγάζει διαφορετικούς? (μετράω τους αριθμους που είναι πανω απο 0,6 με sum1 και αυτους που ειναι μικροτεροι με sum2)

int main()
{
    float x;
    int i;
    int sum1=0,sum2=0;
    for (i=1;i<=30000;i++){
    x=(double)rand() / (double)RAND_MAX ;
    printf("%2.2f \n",x);
    if (x>0.6){
        sum1++;
    }else{
    sum2++;
    }}
    printf("%d %d  \n",sum1,sum2);
    return 0;
}

ευχαριστώ όσους βοηθησουν

Δημοσ.

Καλησπέρα,

 

Δεν γνωρίζω από c αλλά είμαι γνώστης της r. Ίσως σε βοηθήσω ίσως και όχι. Για να παράγεις τυχαίους αριθμούς από 0-1 καλό θα ήταν να χρησιμοποιήσεις την ομοιόμορφη κατανομή (0,1). Θεωρώ ότι λογικά θα υπάρχει σαν εντολή. Απλά googlare λίγο προς αυτή τη κατεύθυνση και το πιθανότερο είναι να βρεις κάτι...

Δημοσ.

https://www.tutorialspoint.com/c_standard_library/c_function_srand.htm

Περιληπτικά: Οι αριθμοί αυτοί της rand είναι ψευδοτυχαίοι, όταν δίνεις το ίδιο φύτρο παίρνεις την ίδια ακολουθία αριθμών. Συνήθως γράφεις:

srand(time(NULL));

στην αρχή του προγράμματός σου και είσαι καλυμμένος. (θα πρέπει να κάνεις include και την time.h)

  • Like 2
Δημοσ. (επεξεργασμένο)

srand(time(NULL));

Βαλε στην αρχη του κωδικα σου και #include <time.h>

 

Ισως να ειναι και αυτο:

double r2()
{
    return (double)rand() / (double)RAND_MAX ;
}
Επεξ/σία από Kourkounatos
Δημοσ.
1 ώρα πριν, Kourkounatos είπε

srand(time(NULL));

Βαλε στην αρχη του κωδικα σου και #include <time.h>

Ισως να ειναι και αυτο:


double r2()
{
    return (double)rand() / (double)RAND_MAX ;
}

το time το χρειαζομαι για αλλη συναρτηση

 

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...