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.

Reply via email to