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.