Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

rand with seed does not return random if function looped

Tags:

c

random

I wrote this C code below, when I loop, it returns a random number. How can I achieve the 5 different random values if myrand() is executed?

#include <stdio.h>
#include <stdlib.h>

int myrand() {
    int ue_imsi;
    int seed = time(NULL);
    srand(seed);
    ue_imsi = rand();

    return ue_imsi;
}

int main()
{
    int value = 0;
    int i=0;
    for (i=0; i< 5; i++)
    {
        value =myrand();
        printf("value is %d\n", value);
    }
}
like image 882
xambo Avatar asked Nov 29 '11 16:11

xambo


2 Answers

Seeding the generator should be done once(for each sequence of random numbers you want to generate of course!):

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int seed = time(NULL);
    srand(seed);
    int value = 0;
    int i=0;
    for (i=0; i< 5; i++)
    {
        value =rand();
        printf("value is %d\n", value);
    }
}
like image 104
Khaled Alshaya Avatar answered Oct 18 '22 13:10

Khaled Alshaya


Move the srand() call into main(), before the loop.

In other words, call srand() once and then call rand() repeatedly, without any further calls to srand():

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int value = 0;
    int i = 0;
    srand(time(NULL));
    for (i = 0; i < 5; i++)
    {
        value = rand();
        printf("value is %d\n", value);
    }
}
like image 29
NPE Avatar answered Oct 18 '22 15:10

NPE