It uses 30 random bits from f() to build a 30-digit number which will be in the range 0..2^30. 2^30 is 1,073,741,824. p*2^32 is the number of values in that range which should produce the result 0. Don
On Sep 12, 10:48 am, siddharth srivastava <akssps...@gmail.com> wrote: > On 12 September 2011 20:49, Don <dondod...@gmail.com> wrote: > > > For particular values of p we might be able to do better, but for > > unknown values of p, I can't think of anything better than this: > > > int g(double p) > > { > > int n = 0; > > for(int i = 0; i < 30; ++i) > > n += n+f(); > > return n > (int)(p*1073741824.0); > > } > > explain the magic numbers please ;) > > > > > > > On Sep 12, 9:55 am, JITESH KUMAR <jkhas...@gmail.com> wrote: > > > Hi > > > You are given a function f() that returns either 0 or 1 with equal > > > probability. > > > Write a function g() using f() that return 0 with probability p (where > > 0<p<1 > > > ) > > > > -- > > > *Regards > > > Jitesh Kumar* > > > -- > > You received this message because you are subscribed to the Google Groups > > "Algorithm Geeks" group. > > To post to this group, send email to algogeeks@googlegroups.com. > > To unsubscribe from this group, send email to > > algogeeks+unsubscr...@googlegroups.com. > > For more options, visit this group at > >http://groups.google.com/group/algogeeks?hl=en. > > -- > Regards > Siddharth Srivastava -- You received this message because you are subscribed to the Google Groups "Algorithm Geeks" group. To post to this group, send email to algogeeks@googlegroups.com. To unsubscribe from this group, send email to algogeeks+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/algogeeks?hl=en.