1. The "industry standard" shuffle algorithm in Euphoria

Back on November 30th/December 1st (depending on your global location), in
"Re: Help With My Game of Black Jack", Jiri Babor posted a shuffle()
algorithm, ending his post with this rather enigmatic paragraph:

>Btw, for very obscure theoretical reasons, this is *not* the best
>possible shuffle, but it is still far better than what you can get by
>hand.

This comment got me thinking -- what *is* the "best possible" shuffle? To
make a long story short, I hunted around on the internet, found some code
for a "uniformly random" shuffle, converted it to Euphoria, merged it into
Jiri's code, and sent the result to Jiri for his opinion. Following some
additional enlightenment from Jiri, I now present the "industry standard"
shuffle algorithm to the list as a generic Euphoria routine:

global function shuffle(sequence s)
-- randomly shuffle the elements of a sequence
-- written by Gabriel Boehme
--    based Jiri Babor's Euphoria interpretation of the "uniformly random"
--    1963 shuffle algorithm written by L.E. Moses and R.V. Oakford
integer r
object temp
   for i = length(s) to 2 by -1 do
      r = rand(i)
      temp = s[r]
      s[r] = s[i]
      s[i] = temp
   end for
   return s
end function


Hep yadda,
Gabriel Boehme

----------
The unconscious democracy of America is a very fine thing. It is a true and
deep and instinctive assumption of the equality of citizens, which even
voting and elections have not destroyed.

G.K. Chesterton
----------

new topic     » topic index » view message » categorize

Search



Quick Links

User menu

Not signed in.

Misc Menu