On 1/31/07, [EMAIL PROTECTED] <[EMAIL PROTECTED]> wrote: > > ok, this is a lame attempt - can someone explain if it's correct, or > why not : > > int limited_rand() { > return rand() % 8 + 1; > } > > value = limited_rand() % 3 + limited_rand();
There's no meaning to do mod 8 in your limited_rand() because rand returns number between 1 and 5. And your code never returns 1. Here's my lame attempt. Output is uniformly distributed if input is so. 1 -> 20.065% 2 -> 19.986% 3 -> 19.989% 4 -> 19.964% 5 -> 19.996% 1 -> 14.352% 2 -> 14.302% 3 -> 14.281% 4 -> 14.285% 5 -> 14.295% 6 -> 14.252% 7 -> 14.233% /* */ #include<stdio.h> #include<stdlib.h> #include<string.h> int rand5() { return (rand() % 5)+1; } int rand2() { int bit; while((bit=rand5())==5); return bit%2; } int rand7() { int sum; while( (sum = rand2() + rand2()*2 + rand2()*4) == 0); return sum; } int main() { int freq1[6]; int freq2[8]; memset(freq1, 0, sizeof(freq1)); memset(freq2, 0, sizeof(freq2)); const int ITER = 1000000; for(int i=0; i<ITER; i++) { freq1[rand5()]++; freq2[rand7()]++; } for(int i=1; i<=5; i++) printf("%d -> %.3lf%%\n", i, double(freq1[i])/ITER*100); printf("\n\n"); for(int i=1; i<=7; i++) printf("%d -> %.3lf%%\n", i, double(freq2[i])/ITER*100); return 0; } But of course it is not guaranteed to terminate but it works usually :-) atamurat > > > On Jan 31, 7:29 am, "Ming \(Amos\) Zhang" <[EMAIL PROTECTED]> wrote: > > It's not uniformly distributed, suppose the given random generator is > > uniformly distributed > > > > -----Original Message----- > > From: algogeeks@googlegroups.com [mailto:[EMAIL PROTECTED] On > > > > Behalf Of Sandesh > > Sent: Tuesday, January 30, 2007 11:09 PM > > To: Algorithm Geeks > > Subject: [algogeeks] Re: (need help) How to solve this random number > > generatioin problem? > > > > suppose "given" function returns the random numbers between 1 -5 then > > you can have > > > > (given + given) % 7 +1 > > > > which will generate between 1 and 7 . > > > > -Sandesh Hegde > > > > On Jan 31, 6:57 am, "Jialin" <[EMAIL PROTECTED]> wrote: > > > Question: > > > > > Given a program which can generate one of {1, 2, 3, 4, 5} randomly. > > > How can we get another generator which can generate one of > > > {1,2,3,4,5,6,7} randomly? > > > > > Thank you! > > > > > --~--~---------~--~----~------------~-------~--~----~ 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 [EMAIL PROTECTED] For more options, visit this group at http://groups-beta.google.com/group/algogeeks -~----------~----~----~----~------~----~------~--~---