I understand what you are doing in the loop but return statement is not
clear to me. Can you explain.

On Mon, Aug 29, 2011 at 9:48 PM, Don <[email protected]> wrote:

> int custRand(int n)
> {
>        int a,b;
>        do
>        {
>                a = rand(n);
>                b = rand(n);
>        } while(a < b);
>        return n - a + b;
> }
>
> On Aug 29, 10:48 am, Piyush Grover <[email protected]> wrote:
> > Given a function rand(n) which returns a random value between 1...n
> assuming
> > equal probability.
> > Write a function CustRand(n) using rand(n) which returns a value between
> > 1...n such that
> > the probability of occurrence of each number is proportional to its
> value.
> >
> > I have a solution but wondering if I can get better than this or some
> other
> > approaches:
> >
> > CustRand(n){
> >
> >     sum  = n*(n+1)/2;
> >
> >     a = rand(sum);
> >     for(i = 1; i <= n; i++){
> >          h = i*(i+1)/2;
> >          l = i*(i-1)/2;
> >          if(a <= h && a > l)
> >              return i;
> >     }
> >
> > }
>
> --
> 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.

Reply via email to