Loading...

algogeeks@googlegroups.com
[Prev] Thread [Next]  [Prev] Date [Next]
Re: [algogeeks] Re: Pbm with rand() function Prakash D Mon Feb 27 22:00:39 2012
with equal probability On Tue, Feb 28, 2012 at 5:28 AM, 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 pseudorandom stream >> is important, such as simulation, using the builtin rand() function >> is not a good idea. Use a pseudorandom 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 pseudorandom integer in the range 0..n1 >> 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 at >> http://groups.google.com/group/algogeeks?hl=en. >>  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.
 [algogeeks] Pbm with rand() function karthikeya s 2012/02/26
 [algogeeks] Re: Pbm with rand() function Dave 2012/02/26
 [algogeeks] Re: Pbm with rand() function karthikeya s 2012/02/26
 [algogeeks] Re: Pbm with rand() function Dave 2012/02/26
 [algogeeks] Re: Pbm with rand() function karthikeya s 2012/02/26
 Re: [algogeeks] Re: Pbm with rand() function amrit harry 2012/02/26
 [algogeeks] Re: Pbm with rand() function Don 2012/02/27
 Re: [algogeeks] Re: Pbm with rand() function Prakash D 2012/02/27
 Re: [algogeeks] Re: Pbm with rand() function Prakash D 2012/02/27 <=
 [algogeeks] Re: Pbm with rand() function Don 2012/02/28