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.
In Visual Basic (yeah I know it's not a real programming language...):
Dim I, J, IntArray(37), Temp As Integer
' Fill Integer Array with values from 1 to 37
For I = 1 To 37
IntArray(I) = I
Next I
'Shuffle Array
For I = 1 To 37
J = Rnd()
Temp = IntArray(I)
IntArray(I) = IntArray(J)
IntArray(J) = Temp
Next I
Print IntArray(Rnd())
Stop
End

Posted by Erik O.
on 20040608 14:22:25 