Oops there was a typo in my suggested
Set::AtRandom
Here's the one I'm actually using:
atRandom: aGenerator
"Answer a random
element of the receiver. Uses aGenerator which
should be kept by
the user in a variable and used every time. Use
this instead of
#atRandom for better uniformity of random numbers
because only you use
the generator. Causes an error if self has no
elements."
| ind entry |
entry _
nil.
[entry == nil] whileTrue: [
self
emptyCheck.
ind _ aGenerator nextInt: array
size.
entry _ array at:
ind.
].
^entry.