Reply by Bhaskar Thiagarajan●August 17, 20042004-08-17

"Toby Newman" <google@asktoby.com> wrote in message
news:MPG.1b8c3327b8545dd1989933@localhost...

>
> I'm using Analog Devices' SHARC ADSP21065l board.
> My bundled VisualDSP++ documentation states:
>
> "The rand function returns a pseudo-random integer value in the range
> [0, 2^32 =3F 1]."
>
> 2^32 = 4294967296.
>
> After running the below code for about an hour I ended up with
> j = 2147483647
> i.e. j was equal to exactly half of 4294967296
> i.e. exactly half of (2^32 -1)

Well...you've declared j as an integer (not unsigned integer). An integer
requires a sign bit and eats up 1 of the 32 bits. So you couldn't possibly
store 2^32 in that variable.
My VDSP++3.0 documentation for rand() says that it returns an integer value
in the range [0, 2^32-1]. So you can blame it on the documentation I guess.
Cheers
Bhaskar

>
> //=========================================
> #include <stdlib.h> //allow rand() function
> int main(void)
> {
> int i;
> int j = 1;
> while(1)
> {
> i = rand();
> if (i>j)
> {
> j = i;
> }
> }
> }
> //=========================================
>
> How come rand() isn't behaving as it is described to in the
> documentation?
>
> --
> Toby

Reply by Toby Newman●August 17, 20042004-08-17

I'm using Analog Devices' SHARC ADSP21065l board.
My bundled VisualDSP++ documentation states:
"The rand function returns a pseudo-random integer value in the range
[0, 2^32 =3F 1]."
2^32 = 4294967296.
After running the below code for about an hour I ended up with
j = 2147483647
i.e. j was equal to exactly half of 4294967296
i.e. exactly half of (2^32 -1)
//=========================================
#include <stdlib.h> //allow rand() function
int main(void)
{
int i;
int j = 1;
while(1)
{
i = rand();
if (i>j)
{
j = i;
}
}
}
//=========================================
How come rand() isn't behaving as it is described to in the
documentation?
--
Toby