sorry sires couldnt reply earlier, was caught up with something. 1) Invoke r5g(); if the number is 4, go back to step 1 immediately. 2) In case of 0 or 1, set the "Base" to 0, otherwise set the "Base" to 4. 3) Invoke r5g() another time; if the result is 4, go back to step 1 immediately. 4) Add the number from step 3 to the "Base" from step 2. 5) If the result is 7, go back to step 1 immediately.
sir nico could u please clarify step 5? why have u chosen such an algorithm? what really fuelled this "approach"? pretty abstract innovative thinking :) please give me some time to analyze this and come up with stats about the distribution generated using this algorithm. ummm about why i wanted to create a random 7 generator from a random 5 generator. no reasons as such. this "problem" just came up while i was studying random algorithms. thought lets try. as always its a pleasure to be interacting with u all. cheers hulk On 8/26/07, Nico Heinze <[EMAIL PROTECTED]> wrote: > > --- In [email protected] <c-prog%40yahoogroups.com>, "suchismit > mahapatra" <[EMAIL PROTECTED]> wrote: > > > > its great to hear from you josh. > > must say ur approach is interesting. > > but the thing is even ur method doesnt give us the perfect > > random7generator. > <snip> > > May I suggest to ask the "ultimate judge" on that matter? Donald > Knuth's The Art Of Computer Programming, volume 3, gives a more than > thorough introduction into pseudo-random number generation. I don't > have the time to look it up by now, but at least I can agree with Josh > that the approach in your original email was flaky. If you get the > chance to get hold of a copy of The Art Of Computer Programming vol. > 3, please, do it, and read this chapter. It's a hard read, I know, but > it's definitely worth the time you spend on it. > I don't have the time by now, otherwise I would do it myself. Sorry > for that. > > What about the following approach: > 1) Invoke r5g(); if the number is 4, go back to step 1 immediately. > 2) In case of 0 or 1, set the "Base" to 0, otherwise set the "Base" to 4. > 3) Invoke r5g() another time; if the result is 4, go back to step 1 > immediately. > 4) Add the number from step 3 to the "Base" from step 2. > 5) If the result is 7, go back to step 1 immediately. > > This of course means that sometimes the generator has to be invoked > more than twice per number, but what the heck, I think this extra time > is not worth hard consideration. > And (from my gut feeling) I think it will have the advantage that all > numbers will occur equally often. > > BTW may I dare to ask why you want to use a r5g() to resemble a r7g()? > What's the use of such a trick? It would make much more sense to write > your pseudo-random number generator (PRNG) such that it can be used > for any integer (in its technically defined domain of valid values) > than to use a "narrow" PRNG to implement a "wider" PRNG. What are the > restrictions that bind you to a r5g()? > > As always, if someone can prove I'm wrong, please do so! Thomas is not > the only one to enjoy learning new tricks. ;-) > > Regards, > Nico > > > [Non-text portions of this message have been removed]
