PRNG Algorithm for RAN()

Discussion in 'C Programming' started by John Schutkeker, Jul 4, 2003.

  1. Does anybody know what pseudo-random number generator was used to implement
    the RAN() function in the C standard math library? Knuth couldn't have
    gone so far as to implement a quadratic congruential method, right? Is it
    yet another implementation of the much reviled RANDU?
    John Schutkeker, Jul 4, 2003
    1. Advertisements

  2. John Schutkeker

    Mike Wahler Guest

    There isn't a single one. Each implementation is free
    to use its own version, as long as its behavior meets
    I don't know, why not look it up?
    The C standard does not specify which algorithm be used
    by the standard library function 'rand()'.

    Mike Wahler, Jul 4, 2003
    1. Advertisements

  3. John Schutkeker

    Richard Bos Guest

    There is no RAN() function in the C library (and if there were, that
    all-caps name would be a bad idea). The Standard RNG function is called
    rand(). rand() is not in the math library, nor in the maths headers, but
    Knuth has nothing to do with the ISO C Standard library (unless he is on
    the ISO C Committee, which I think he isn't, BICBW), and he certainly
    has not implemented anything that can be called "the" Standard library.

    All the Standard requires is that
    - rand() returns a sequence of PRNs, between 0 to RAND_MAX inclusive;
    - no library function shall call rand() (as far as the user can detect);
    - RAND_MAX is at least 32767;
    - srand() can be used to initialise rand()'s seed.

    Nothing else is required. An example is given as to how rand() _could_
    be implemented, but that's all it is: an example.

    Richard Bos, Jul 4, 2003
  4. John Schutkeker

    Micah Cowan Guest

    Hm... well, first of all, neither RAN() nor RANDU() are in the C
    standard math library. Second, Donald Knuth had nothing whatsoever to
    do with the creation of the standard library, though it's conceivable
    that he has written one of his own.

    I would be less surprised if you had meant something like "the math
    library Knuth wrote in C". I still don't know to what you would be
    referring, but I don't doubt that he has written math libraries in C.

    But none of this is really topical in a newsgroup which discusses only
    the ISO C programming language, now is it?

    Micah Cowan, Jul 5, 2003
  5. Did Ritchie, or whoever wrote this routine, ever publish a justification
    for the constant "1103515245." I guess the whole trick to writing a good
    LCG is to find the best possible value of that constant. There's obviously
    nothing special about the built in seed, "12345."
    John Schutkeker, Jul 6, 2003
    1. Advertisements

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments (here). After that, you can post your question and our members will help you out.