> I know how to use rand() to generate random POSITIVE-INTEGER numbers.
>
[quoted text clipped - 3 lines]
> be able to seed this generator (e.g., via the clock) so that the same
> sequence of random values don't come up every time.
Thanks, Carl!
You gave me a better way than I was going. I'll create a class that allows
me to generate a floating-point number in the range of [0.0.,1.0] (yes,
closed on both sides) of arbitray bit-count resolution up to a limit (51, or
possibly even 63, sounds good, based on your response).
Say the bit-count is N. Generate an N-bit random number by generating N/16
number of random 16-bit integers (using rand()), and possibly 1 more for the
N%16 remaining bits (which is masked off the apprograte number of high bits
to get correct number of bytes), and then append them into a double by
shifting and adding. Then divide by a double version of (2^N - 1) and that
should (for some values of N) produce the closed interval random
floating-point number expressed as a double!
The seed is nor just srand()...
Thanx again...! :)
[==Peteroid==]
> > I know how to use rand() to generate random POSITIVE-INTEGER numbers.
> >
[quoted text clipped - 17 lines]
>
> -cd
Carl Daniel [VC++ MVP] - 25 Nov 2004 04:15 GMT
> Thanks, Carl!
>
[quoted text clipped - 12 lines]
> the closed interval random floating-point number expressed as a
> double!
Just be aware that the resulting numbers will very likely not cover all
possible values. The period of a 52 bit number generated from concatenation
of 4 values from a 16 bit rng followed by a mask to 52 bits will be at most
2^18 - nowhere near 2^52.
-cd
TOM - 25 Nov 2004 15:15 GMT
You may want to read the section on random number generators in
"Numerical Recipes in C". The text is free and on-line in PDF format by
permission of the publisher, at:
http://www.nr.com/
It's very difficult to build a good random number generator. The text
illustrates the problems and some ways around it, but is focused
on float rather than double.
-- Tom
> Thanks, Carl!
>
[quoted text clipped - 44 lines]
>>
>> -cd
Peteroid - 28 Nov 2004 19:17 GMT
Thanks for the link Tom!
As it turns out (and unlike what I first asked), I don't actaully need for
every double floating-point number to be generated randomly that exists in
[0.0,1.0]. It turns out I'm able to determine the 'resolution' of the
generator that is good enough for my application for what it happens to be
doing at the moment. By 'resolution' I mean the number of possible
equally-spaced floating-point random values I need to generate in the
[0.0,1.0] range (e.g., resolution 3 would generate only these values: 0.0,
.5, 1.0).
So I created a class with a 'base' (= resolution-1) and let rand() generate
a random number from 0 to base, and then produce this number divided by
base to get it into the [0.0,1.0] range. This is sufficient for my
application.
I realized, based on the responses here, that any random number generator on
a digital computer will never return all possibly real numbers, so I had to
deal with a 'resolution' no matter what. The method I've created deals with
such any (not too big) resolution 'perfectly', and so it works!
Thanks!
[==Peteroid==]
> You may want to read the section on random number generators in
> "Numerical Recipes in C". The text is free and on-line in PDF format by
[quoted text clipped - 56 lines]
> >>
> >> -cd