Portable random number generator

Discussion in 'C++' started by Gus Gassmann, Nov 10, 2010.

  1. Gus Gassmann

    Gus Gassmann Guest

    I am collaborating on a rather large project with complicated XML
    files (some objects nest ten levels deep) and corresponding data
    handling challenges. I want to do proper testing of the (C++) code and
    decided that the only way to go is random tests. So now I am looking
    for a random number generator with the following properties:

    1. Portability.
    2. Random starting points.
    3. Replicability on demand.

    I presume this means that I would seed the RNG based on the clock, but
    keep a copy of the seed that I could optionally use at the start in
    case I found a problem on a previous run.

    Statistical properties are of lesser importance.

    I presume I am not the first person to attempt this and am hoping to
    find some guidance here. Both C and C++ would be OK for the RNG, hence
    the cross-post.

    Thanks for any hints.

    gus
    --
    comp.lang.c.moderated - moderation address: -- you must
    have an appropriate newsgroups line in your header for your mail to be seen,
    or the newsgroup name in square brackets in the subject line. Sorry.
     
    Gus Gassmann, Nov 10, 2010
    #1
    1. Advertising

  2. On 11/9/2010 11:12 PM, Gus Gassmann wrote:
    > I am collaborating on a rather large project with complicated XML
    > files (some objects nest ten levels deep) and corresponding data
    > handling challenges. I want to do proper testing of the (C++) code and
    > decided that the only way to go is random tests. So now I am looking
    > for a random number generator with the following properties:
    >
    > 1. Portability.
    > 2. Random starting points.
    > 3. Replicability on demand.
    >
    > I presume this means that I would seed the RNG based on the clock, but
    > keep a copy of the seed that I could optionally use at the start in
    > case I found a problem on a previous run.
    >
    > Statistical properties are of lesser importance.
    >
    > I presume I am not the first person to attempt this and am hoping to
    > find some guidance here. Both C and C++ would be OK for the RNG, hence
    > the cross-post.
    >
    > Thanks for any hints.


    I am afraid to ask... Why not use 'srand/rand' pair of functions? You
    can always do

    unsigned seed = (unsigned)time(0); // for keeping
    srand(seed);
    ...

    Of course, it's so damn obvious that I expect some kind of a trick...

    V
    --
    I do not respond to top-posted replies, please don't ask
     
    Victor Bazarov, Nov 10, 2010
    #2
    1. Advertising

  3. Gus Gassmann

    osmium Guest

    "Victor Bazarov" wrote:

    > On 11/9/2010 11:12 PM, Gus Gassmann wrote:
    >> I am collaborating on a rather large project with complicated XML
    >> files (some objects nest ten levels deep) and corresponding data
    >> handling challenges. I want to do proper testing of the (C++) code and
    >> decided that the only way to go is random tests. So now I am looking
    >> for a random number generator with the following properties:
    >>
    >> 1. Portability.
    >> 2. Random starting points.
    >> 3. Replicability on demand.
    >>
    >> I presume this means that I would seed the RNG based on the clock, but
    >> keep a copy of the seed that I could optionally use at the start in
    >> case I found a problem on a previous run.
    >>
    >> Statistical properties are of lesser importance.
    >>
    >> I presume I am not the first person to attempt this and am hoping to
    >> find some guidance here. Both C and C++ would be OK for the RNG, hence
    >> the cross-post.
    >>
    >> Thanks for any hints.

    >
    > I am afraid to ask... Why not use 'srand/rand' pair of functions? You
    > can always do
    >
    > unsigned seed = (unsigned)time(0); // for keeping
    > srand(seed);
    > ...
    >
    > Of course, it's so damn obvious that I expect some kind of a trick...


    I assume by portable he means the same sequence would be provided from a
    given seed regardless of the target computer.

    rand() gets an F on that.
     
    osmium, Nov 10, 2010
    #3
  4. Victor Bazarov <> wrote:
    > I am afraid to ask... Why not use 'srand/rand' pair of functions?


    It's indeed the standard solution, but only if the horrendous quality
    of the typical std::rand() implementation isn't a problem.
     
    Juha Nieminen, Nov 10, 2010
    #4
  5. On 11/10/2010 10:11 AM, osmium wrote:
    > "Victor Bazarov" wrote:
    >
    >> On 11/9/2010 11:12 PM, Gus Gassmann wrote:
    >>> I am collaborating on a rather large project with complicated XML
    >>> files (some objects nest ten levels deep) and corresponding data
    >>> handling challenges. I want to do proper testing of the (C++) code and
    >>> decided that the only way to go is random tests. So now I am looking
    >>> for a random number generator with the following properties:
    >>>
    >>> 1. Portability.
    >>> 2. Random starting points.
    >>> 3. Replicability on demand.
    >>>
    >>> I presume this means that I would seed the RNG based on the clock, but
    >>> keep a copy of the seed that I could optionally use at the start in
    >>> case I found a problem on a previous run.
    >>>
    >>> Statistical properties are of lesser importance.
    >>>
    >>> I presume I am not the first person to attempt this and am hoping to
    >>> find some guidance here. Both C and C++ would be OK for the RNG, hence
    >>> the cross-post.
    >>>
    >>> Thanks for any hints.

    >>
    >> I am afraid to ask... Why not use 'srand/rand' pair of functions? You
    >> can always do
    >>
    >> unsigned seed = (unsigned)time(0); // for keeping
    >> srand(seed);
    >> ...
    >>
    >> Of course, it's so damn obvious that I expect some kind of a trick...

    >
    > I assume by portable he means the same sequence would be provided from a
    > given seed regardless of the target computer.


    Ah... I didn't assume that. But it might be valid, if he wants to run
    the failed tests on a different platform than the one on which they fail.

    > rand() gets an F on that.


    In that case he just needs to take the source of the 'rand' from any
    standard library implementation that he can lay his hands on, and stick
    it into his source. From what I gathered of the requirements the
    evenness of the distribution or the length of the cycle aren't high on
    his list.

    V
    --
    I do not respond to top-posted replies, please don't ask
     
    Victor Bazarov, Nov 10, 2010
    #5
  6. Gus Gassmann

    osmium Guest

    "Victor Bazarov" wrote:

    > On 11/10/2010 10:11 AM, osmium wrote:
    >> "Victor Bazarov" wrote:
    >>
    >>> On 11/9/2010 11:12 PM, Gus Gassmann wrote:
    >>>> I am collaborating on a rather large project with complicated XML
    >>>> files (some objects nest ten levels deep) and corresponding data
    >>>> handling challenges. I want to do proper testing of the (C++) code and
    >>>> decided that the only way to go is random tests. So now I am looking
    >>>> for a random number generator with the following properties:
    >>>>
    >>>> 1. Portability.
    >>>> 2. Random starting points.
    >>>> 3. Replicability on demand.
    >>>>
    >>>> I presume this means that I would seed the RNG based on the clock, but
    >>>> keep a copy of the seed that I could optionally use at the start in
    >>>> case I found a problem on a previous run.
    >>>>
    >>>> Statistical properties are of lesser importance.
    >>>>
    >>>> I presume I am not the first person to attempt this and am hoping to
    >>>> find some guidance here. Both C and C++ would be OK for the RNG, hence
    >>>> the cross-post.
    >>>>
    >>>> Thanks for any hints.
    >>>
    >>> I am afraid to ask... Why not use 'srand/rand' pair of functions? You
    >>> can always do
    >>>
    >>> unsigned seed = (unsigned)time(0); // for keeping
    >>> srand(seed);
    >>> ...
    >>>
    >>> Of course, it's so damn obvious that I expect some kind of a trick...

    >>
    >> I assume by portable he means the same sequence would be provided from a
    >> given seed regardless of the target computer.

    >
    > Ah... I didn't assume that. But it might be valid, if he wants to run the
    > failed tests on a different platform than the one on which they fail.
    >
    >> rand() gets an F on that.

    >
    > In that case he just needs to take the source of the 'rand' from any
    > standard library implementation that he can lay his hands on, and stick it
    > into his source. From what I gathered of the requirements the evenness of
    > the distribution or the length of the cycle aren't high on his list.


    I don't think that works. Many of the generators that I have looked at have
    built in assumptions; computations are assumed to be mod 16 or mod 32, for
    example based on the (PRNG) programmer's presuming a certain platform.
    These are implicit assumptions and don't show up in the code. For example,
    I wouldn't be happy if I saw a simple variable of type int in the code,
    since int has no particular meaning.

    From the general tenor of the original request, I think he wants testing on
    various platforms to exhibit consistent results.
     
    osmium, Nov 10, 2010
    #6
  7. Gus Gassmann

    Andy Venikov Guest

    On 11/10/2010 10:19 AM, Juha Nieminen wrote:
    > Victor Bazarov<> wrote:
    >> I am afraid to ask... Why not use 'srand/rand' pair of functions?

    >
    > It's indeed the standard solution, but only if the horrendous quality
    > of the typical std::rand() implementation isn't a problem.


    If performance isn't an issue, you can use ARCFOUR - it produces the
    same sequence given the same seed on all architectures (since it's
    byte-based), the randomness is fairly good and it's SO easy to implement.

    Andy.
     
    Andy Venikov, Nov 10, 2010
    #7
  8. Gus Gassmann

    Jorgen Grahn Guest

    On Wed, 2010-11-10, Juha Nieminen wrote:
    > Victor Bazarov <> wrote:
    >> I am afraid to ask... Why not use 'srand/rand' pair of functions?

    >
    > It's indeed the standard solution, but only if the horrendous quality
    > of the typical std::rand() implementation isn't a problem.


    Which ones are you thinking of, specifically? And what's horrendous
    about them?

    /Jorgen

    --
    // Jorgen Grahn <grahn@ Oo o. . .
    \X/ snipabacken.se> O o .
     
    Jorgen Grahn, Nov 10, 2010
    #8
  9. Gus Gassmann

    James Kanze Guest

    On Nov 10, 10:21 pm, Jorgen Grahn <> wrote:
    > On Wed, 2010-11-10, Juha Nieminen wrote:
    > > Victor Bazarov <> wrote:
    > >> I am afraid to ask... Why not use 'srand/rand' pair of functions?


    > > It's indeed the standard solution, but only if the
    > > horrendous quality of the typical std::rand() implementation
    > > isn't a problem.


    > Which ones are you thinking of, specifically? And what's horrendous
    > about them?


    Historically, many rand() were horrible; I don't know if it's
    still a problem, but the (non-normative) example for rand() in
    C90 was horrible, and it corresponded to a widely used
    implementation. (The C90 committee didn't invent the
    implementation; they just copied the most widely used one.)

    Today, the obvious solution is to use the random generators from
    Boost: they have a number of them, with a common interface, so
    you can choose the balance between "randomness" and speed which
    corresponds to your needs.

    For the seed, the choice of time() is OK for programs running
    independently on a machine. More generally, however, something
    more elaborate may be desirable. I'd just read however many
    bytes I needed from /dev/random under Unix; otherwise, you can
    munge in such values as the machine IP or (better) MAC address,
    the process id, etc., to get something truely unique.

    --
    James Kanze
     
    James Kanze, Nov 11, 2010
    #9
  10. Jorgen Grahn <> wrote:
    > On Wed, 2010-11-10, Juha Nieminen wrote:
    >> Victor Bazarov <> wrote:
    >>> I am afraid to ask... Why not use 'srand/rand' pair of functions?

    >>
    >> It's indeed the standard solution, but only if the horrendous quality
    >> of the typical std::rand() implementation isn't a problem.

    >
    > Which ones are you thinking of, specifically? And what's horrendous
    > about them?


    All the implementations of std::rand() I know of use a simple 32-bit
    linear congruential generator (which result is, for whatever reason I
    can't really understand, clamped to 15 bits). Linear congruential
    generators are some of the poorest RNGs around, and often present aliasing
    artifacts in certain situations (eg. regular patterns). Also, oddly enough
    (taking into accoung how simple a LCG is, basically one integer
    multiplication and one addition), LCGs are rather slow (of course this is
    only relevant if you need extreme efficiency).

    There are many RNG algorithms which produce significantly better-quality
    distributions significantly faster than a typical LCG-using std::rand().
    (The most known example is probably the Mersenne Twister, but there are
    others too, such as ISAAC.)
     
    Juha Nieminen, Nov 11, 2010
    #10
  11. Gus Gassmann

    Daniel Guest

    On Nov 11, 4:24 am, James Kanze <> wrote:
    >
    > For the seed, the choice of time() is OK for programs running
    > independently on a machine.  More generally, however, something
    > more elaborate may be desirable.
    > --
    > James Kanze


    If you are solving a problem in parallel, using time() to seed RNG's
    for programs running independently is not better than having a server
    process handing out sequential seeds 1, 2, etc. In both cases you'd
    have no guarantees that the random numbers on the different programs
    were uncorrelated. It's better to have different, systematically
    spaced seeds.

    There's a good source for information about parallel RNG's at
    http://sprng.cs.fsu.edu/.

    -- Daniel
     
    Daniel, Nov 12, 2010
    #11
  12. On Nov 10, 6:12 am, Gus Gassmann <>
    wrote:
    > So now I am looking
    > for a random number generator with the following properties:
    >
    > 1. Portability.
    > 2. Random starting points.
    > 3. Replicability on demand.
    >



    Just use the K and R function

    static unsigned long random_seed = 123456;

    void simplesrand(unsigned long seed)
    {
    random_seed = seed;
    }

    int simplerand()
    {
    random_seed = random_seed * 1103515245 +12345;
    return (unsigned int)(random_seed / 65536) % 32768;
    }
    --
    comp.lang.c.moderated - moderation address: -- you must
    have an appropriate newsgroups line in your header for your mail to be seen,
    or the newsgroup name in square brackets in the subject line. Sorry.
     
    Malcolm McLean, Nov 12, 2010
    #12
  13. Gus Gassmann

    James Kanze Guest

    On Nov 10, 4:12 am, Gus Gassmann <>
    wrote:
    > I am collaborating on a rather large project with complicated XML
    > files (some objects nest ten levels deep) and corresponding data
    > handling challenges. I want to do proper testing of the (C++) code and
    > decided that the only way to go is random tests. So now I am looking
    > for a random number generator with the following properties:


    > 1. Portability.
    > 2. Random starting points.
    > 3. Replicability on demand.


    > I presume this means that I would seed the RNG based on the clock, but
    > keep a copy of the seed that I could optionally use at the start in
    > case I found a problem on a previous run.


    > Statistical properties are of lesser importance.


    > I presume I am not the first person to attempt this and am hoping to
    > find some guidance here. Both C and C++ would be OK for the RNG, hence
    > the cross-post.


    There are a number of implementations available on the network;
    boost has some, for example. And it's not difficult to
    implement the minimum generator yourself.

    With regards to the seed: time() is the classical solution, but
    depending on the context in which your program runs, it may not
    suffice. On Unix platforms, I'll read a couple of bytes from
    /dev/random. Otherwise, munging in things like the host IP
    address and the process id may be necessary to ensure
    uniqueness. (And once you've got a seed, log it so you can use
    it in case of problems, like you said.)

    --
    James Kanze
    --
    comp.lang.c.moderated - moderation address: -- you must
    have an appropriate newsgroups line in your header for your mail to be seen,
    or the newsgroup name in square brackets in the subject line. Sorry.
     
    James Kanze, Nov 12, 2010
    #13
  14. Gus Gassmann

    Mark Wooding Guest

    Gus Gassmann <> writes:

    > So now I am looking for a random number generator with the following
    > properties:
    >
    > 1. Portability.
    > 2. Random starting points.
    > 3. Replicability on demand.
    >
    > I presume this means that I would seed the RNG based on the clock, but
    > keep a copy of the seed that I could optionally use at the start in
    > case I found a problem on a previous run.
    >
    > Statistical properties are of lesser importance.


    Replicability suggests a determinisic process: random starting points
    are then your own problem of choosing a seed in some acceptable way.

    There are a number of very simple and fast cryptographic-quality
    generators out there (though you don't mention performance as being a
    consideration at all).

    Rivest's RC4 is extremely simple, and though it has some minor biases
    seems adequate for non-cryptographic use if you can tolerate its
    octet-at-a-time output.

    Bernstein's Salsa20/8 is simple, fast, and seems very secure; it's also
    seekable, which may or may not be of interest.

    For non-cryptographic applications, I usually use Knuth's lagged
    Fibonacci generator, which wants a lot of seed material; for this, I use
    a linear congruential generator of my own devising.

    I don't have an implementation of Salsa20/8, but you can surely find the
    code online; the others are implemented in my Catacomb library, in
    (pedantically) portable C:

    http://git.distorted.org.uk/~mdw/catacomb/tree

    available under the LGPL (see {rc4,fibrand,lc}.[ch]). Since this is for
    testing purposes, I imagine the code won't in fact be distributed at all
    and LGPL will therefore be acceptable. If I'm wrong about this, send me
    mail: I'm willing to be generous with small portions of the library on a
    case-by-case basis.

    -- [mdw]
    --
    comp.lang.c.moderated - moderation address: -- you must
    have an appropriate newsgroups line in your header for your mail to be seen,
    or the newsgroup name in square brackets in the subject line. Sorry.
     
    Mark Wooding, Nov 12, 2010
    #14
  15. Gus Gassmann

    Öö Tiib Guest

    On Nov 10, 6:12 am, Gus Gassmann <>
    wrote:
    > I am collaborating on a rather large project with complicated XML
    > files (some objects nest ten levels deep) and corresponding data
    > handling challenges. I want to do proper testing of the (C++) code and
    > decided that the only way to go is random tests. So now I am looking
    > for a random number generator with the following properties:
    >
    > 1. Portability.
    > 2. Random starting points.
    > 3. Replicability on demand.
    >
    > I presume this means that I would seed the RNG based on the clock, but
    > keep a copy of the seed that I could optionally use at the start in
    > case I found a problem on a previous run.
    >
    > Statistical properties are of lesser importance.
    >
    > I presume I am not the first person to attempt this and am hoping to
    > find some guidance here. Both C and C++ would be OK for the RNG, hence
    > the cross-post.
    >
    > Thanks for any hints.


    C++0x will contain a clone of boost::random. You can do pretty much
    everything with that lib. All generators have their state seedable and
    serializable.

    Note, that random testing is very powerful tool, but common solution
    there is not seedable RNG. Common solution is to automatically
    extract exact minimal amount of "steps to reproduce" from noise of
    (for example) 300 random operations that resulted with a problem. Then
    report/store these as a problem case.
    --
    comp.lang.c.moderated - moderation address: -- you must
    have an appropriate newsgroups line in your header for your mail to be seen,
    or the newsgroup name in square brackets in the subject line. Sorry.
     
    Öö Tiib, Nov 12, 2010
    #15
  16. Gus Gassmann

    Eric Sosman Guest

    On 11/9/2010 11:12 PM, Gus Gassmann wrote:
    > I am collaborating on a rather large project with complicated XML
    > files (some objects nest ten levels deep) and corresponding data
    > handling challenges. I want to do proper testing of the (C++) code and
    > decided that the only way to go is random tests. So now I am looking
    > for a random number generator with the following properties:
    >
    > 1. Portability.
    > 2. Random starting points.
    > 3. Replicability on demand.
    >
    > I presume this means that I would seed the RNG based on the clock, but
    > keep a copy of the seed that I could optionally use at the start in
    > case I found a problem on a previous run.
    >
    > Statistical properties are of lesser importance.
    >
    > I presume I am not the first person to attempt this and am hoping to
    > find some guidance here. Both C and C++ would be OK for the RNG, hence
    > the cross-post.
    >
    > Thanks for any hints.


    The C Standard shows a portable example of a way its rand()
    function could be implemented; you could take that code, change
    the name, file off the serial numbers, and use it.

    Depending on what you mean by "replicability," you may or may
    not be able to use rand(). On any given system, rand() will be
    repeatable: seed it with the same srand() argument, and you'll get
    the same sequence of rand() results. But if you need to get the
    same sequence on System B that you got earlier on System A, this
    mightn't work: A's and B's rand() implementations may differ.
    (Some people mistakenly believe that the Standard's example is *the* way
    to implement rand(), but it's only an example.) So if you need
    agreement across systems, you'll need to incorporate your own code
    and not rely on the local rand().

    --
    Eric Sosman
    lid
    --
    comp.lang.c.moderated - moderation address: -- you must
    have an appropriate newsgroups line in your header for your mail to be seen,
    or the newsgroup name in square brackets in the subject line. Sorry.
     
    Eric Sosman, Nov 12, 2010
    #16
  17. Gus Gassmann <> writes:
    > I am collaborating on a rather large project with complicated XML
    > files (some objects nest ten levels deep) and corresponding data
    > handling challenges. I want to do proper testing of the (C++) code and
    > decided that the only way to go is random tests. So now I am looking
    > for a random number generator with the following properties:
    >
    > 1. Portability.
    > 2. Random starting points.
    > 3. Replicability on demand.


    There are plenty of PRNGs (with the P meaning "pseudo", not "portable")
    that meet those criteria. Wikipedia is a good starting point,
    especially the Mersenne twister article, which includes both pseudocode
    and links to existing implementations. IIUC, the Mersenne twister is
    currently the best known non-cryptographic deterministic PRNG.

    DES
    --
    Dag-Erling Smørgrav -
    --
    comp.lang.c.moderated - moderation address: -- you must
    have an appropriate newsgroups line in your header for your mail to be seen,
    or the newsgroup name in square brackets in the subject line. Sorry.
     
    Dag-Erling Smørgrav, Nov 12, 2010
    #17
  18. Gus Gassmann

    Jeff Flinn Guest

    Gus Gassmann wrote:
    > I am collaborating on a rather large project with complicated XML
    > files (some objects nest ten levels deep) and corresponding data
    > handling challenges. I want to do proper testing of the (C++) code and
    > decided that the only way to go is random tests. So now I am looking
    > for a random number generator with the following properties:
    >
    > 1. Portability.
    > 2. Random starting points.
    > 3. Replicability on demand.


    I'm not sure if all of these are supported, but certainly you should
    look at:

    http://www.boost.org/doc/libs/1_44_0/doc/html/boost_random.html

    Jeff
    --
    comp.lang.c.moderated - moderation address: -- you must
    have an appropriate newsgroups line in your header for your mail to be seen,
    or the newsgroup name in square brackets in the subject line. Sorry.
     
    Jeff Flinn, Nov 12, 2010
    #18
  19. Gus Gassmann

    DDD Guest

    Gus Gassmann ha escrito:
    > I am collaborating on a rather large project with complicated XML
    > files (some objects nest ten levels deep) and corresponding data
    > handling challenges. I want to do proper testing of the (C++) code and
    > decided that the only way to go is random tests. So now I am looking
    > for a random number generator with the following properties:
    >
    > 1. Portability.
    > 2. Random starting points.
    > 3. Replicability on demand.
    >
    > I presume this means that I would seed the RNG based on the clock, but
    > keep a copy of the seed that I could optionally use at the start in
    > case I found a problem on a previous run.
    >
    > Statistical properties are of lesser importance.
    >
    > I presume I am not the first person to attempt this and am hoping to
    > find some guidance here. Both C and C++ would be OK for the RNG, hence
    > the cross-post.
    >
    > Thanks for any hints.


    If there is no exist functions for using, why not writing yourself.
    For example, by getting system time in seconds and then...

    >
    > gus
    > --
    > comp.lang.c.moderated - moderation address: -- you must
    > have an appropriate newsgroups line in your header for your mail to be seen,
    > or the newsgroup name in square brackets in the subject line. Sorry.

    --
    comp.lang.c.moderated - moderation address: -- you must
    have an appropriate newsgroups line in your header for your mail to be seen,
    or the newsgroup name in square brackets in the subject line. Sorry.
     
    DDD, Nov 12, 2010
    #19
  20. Gus Gassmann

    Guest

    On Nov 9, 10:12 pm, Gus Gassmann <>
    wrote:
    > I am collaborating on a rather large project with complicated XML
    > files (some objects nest ten levels deep) and corresponding data
    > handling challenges. I want to do proper testing of the (C++) code and
    > decided that the only way to go is random tests. So now I am looking
    > for a random number generator with the following properties:
    >
    > 1. Portability.
    > 2. Random starting points.
    > 3. Replicability on demand.
    >
    > I presume this means that I would seed the RNG based on the clock, but
    > keep a copy of the seed that I could optionally use at the start in
    > case I found a problem on a previous run.
    >
    > Statistical properties are of lesser importance.
    >
    > I presume I am not the first person to attempt this and am hoping to
    > find some guidance here. Both C and C++ would be OK for the RNG, hence
    > the cross-post.




    Err... If you don't care much about the quality of the pseudo random
    numbers, why not just use the standard srand()/rand()?
    --
    comp.lang.c.moderated - moderation address: -- you must
    have an appropriate newsgroups line in your header for your mail to be seen,
    or the newsgroup name in square brackets in the subject line. Sorry.
     
    , Nov 12, 2010
    #20
    1. Advertising

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

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. globalrev
    Replies:
    4
    Views:
    810
    Gabriel Genellina
    Apr 20, 2008
  2. Gus Gassmann

    Portable random number generator

    Gus Gassmann, Nov 10, 2010, in forum: C Programming
    Replies:
    38
    Views:
    1,192
    Nobody
    Nov 23, 2010
  3. Gus Gassmann

    Portable random number generator

    Gus Gassmann, Nov 15, 2010, in forum: C Programming
    Replies:
    2
    Views:
    566
    Eric Sosman
    Nov 17, 2010
  4. Gus Gassmann

    Portable random number generator

    Gus Gassmann, Nov 15, 2010, in forum: C++
    Replies:
    2
    Views:
    315
    Eric Sosman
    Nov 17, 2010
  5. VK
    Replies:
    15
    Views:
    1,321
    Dr J R Stockton
    May 2, 2010
Loading...

Share This Page