All about flooble | fun stuff | Get a free chatterbox | Free JavaScript | Avatars
 perplexus dot info

 Random Number Generator (Posted on 2004-06-08)
A particular random number generator returns positive integer n with probability 1/(2^n). (ie '1' with probability 1/2, '2' with probability 1/4, '3' with probability 1/8, etc.)

Using this random number generator, write an algorithm which chooses a random integer from 1 to 37 with equal probability.

 See The Solution Submitted by Brian Smith Rating: 2.0000 (1 votes)

Comments: ( Back to comment list | You must be logged in to post comments.)
 re: program (needed some revision...) | Comment 4 of 26 |
(In reply to This little program should do the trick... by Erik O.)

I think the program I gave in an earlier post weights the upper range of number a bit heavily.  Two slight modifications should do the trick:

First-Run through the shuffleing part at least twice to distribute the numbers more fairly,

Second-In the output, use the first number taken from the array as a pointer to the real number to be displayed.

The program should then look more like:

`Dim I, J, K, IntArray(37), Temp As Integer`
`' Fill Integer Array with values from 1 to 37For I = 1 To 37    IntArray(I) = INext I`
`'Shuffle ArrayFor K = 1 to 3`
`    For I = 1 To 37        J = Rnd()        Temp = IntArray(I)        IntArray(I) = IntArray(J)        IntArray(J) = Temp    Next I`
`Next K`
`Print IntArray(IntArray(Rnd()))`
`StopEnd`

Either of the modifications mentioned above should work fine independantly--using both is probably overkill.

 Posted by Erik O. on 2004-06-08 14:44:16

 Search: Search body:
Forums (0)