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.