This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: random number generators - rand(), random(), etc


Eric Rannaud <e <at> nanocritical.com> writes:

> ... 
> It appears rand() and random() not only share the implementation, they
> also share a single *instance* of the random number generator. These
> two programs give the same output:
> 
>    int main() {
>      fprintf(stderr, "%ld\n", random());
>      fprintf(stderr, "%d\n", rand());
>      return 0;
>    }
>    int main() {
>      fprintf(stderr, "%d\n", rand());
>      fprintf(stderr, "%ld\n", random());
>      return 0;
>    }
> ...

Yes, indeed.

But, if they share the *single instance* of the generator, does it not make
both of them non-reentrant and non-threadsafe since they share a state (it
might be e.g. a seed value) that is modified on each call by one of them ?

jb



Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]