Use Mersenne Twister to generate 32-bit integers and do something like
this:

long long x = MT.gen();
x = (x<<32) + MT.gen();

Don

On Feb 27, 5:58 pm, Prakash D <[email protected]> wrote:
> i've another doubt. what to do when I need to generate a random long long?
>
>
>
> On Mon, Feb 27, 2012 at 9:07 PM, Don <[email protected]> wrote:
> > For instance, if RANDMAX= 32768, then
>
> > x = rand() % 20000;
>
> > is twice as likely to result in the value 10,000 as the value 15,000.
> > This is because there are two output values from rand() which result
> > in x=10000 (10000 and 30000), but only one output value from rand()
> > resulting in x=15000 (15000).
>
> > For any case where the statistical quality of the pseudo-random stream
> > is important, such as simulation, using the built-in rand() function
> > is not a good idea. Use a pseudo-random algorithm with much longer
> > period and better properties, such as Mersenne Twister.
>
> > But if you are using rand, it is usually recommended to use the high
> > order bits rather than the low order bits. Many implementations of
> > rand() have cycles in the low bits which are much shorter than the
> > period of the generator. He is one way to generate unbiased values of
> > quality as good as the generator can provide:
>
> > // Return pseudo-random integer in the range 0..n-1
> > int randRange(int n)
> > {
> >  int result, div = RANDMAX / n;
> >  do {
> >    result = rand() / div;
> >  } while(result >= n);
> >  return result;
> > }
>
> > Don
>
> > On Feb 26, 10:10 am, karthikeya s <[email protected]> wrote:
> >> RAND() func  returns value between 1 to INTMAX, as we know. But when
> >> smone tries to find out value between 1 to N he takes remainder of o/p
> >> of RAND() with N and adds one......but isn't it wrong coz RAND() will
> >> generate numbers with equal probability between 1 and INTMAX but
> >> taking remainder can alter the prob. of generating numbers.....
> >> e.g.
>
> >> INTMAX=50
> >> N=30
> >> RAND(50) gives numbers 1 to 30, then prob. will remain same but if it
> >> gives numbers 31 to 50, they'll be mapped to the numbers 1 to 20,
> >> which means probability of getting numbers 1 to 20 is more than the
> >> probability for 21 to 30.
>
> > --
> > You received this message because you are subscribed to the Google Groups 
> > "Algorithm Geeks" group.
> > To post to this group, send email to [email protected].
> > To unsubscribe from this group, send email to 
> > [email protected].
> > For more options, visit this group 
> > athttp://groups.google.com/group/algogeeks?hl=en.- Hide quoted text -
>
> - Show quoted text -

-- 
You received this message because you are subscribed to the Google Groups 
"Algorithm Geeks" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/algogeeks?hl=en.

Reply via email to