🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: comp.theory
Article #1900

Re: Looking for random permutation generation algorithms

#1900
From: Jim Roth
Date: Wed, 06 Jan 1993 19:24
27 lines
1510 bytes
In article <1993Jan6.014749.15323@ee.ubc.ca>, rayw@ee.ubc.ca (raymond w m woo) writes...
>Hi, does anyone know, or can provide any pointer in the literature to, any 
>random permutation generation algorithm that can be easily implemented as a 
>function in a computer program?  
> 
>Ideally, this function would be computationally effective, and the input 
>that this function takes would be some kind of index/rank number of the
>permution to be generated.  

A coset algorithm works very well for uniformly choosing an element
of a group (in this case the symmetric group.)

   initialize n element array a(i) = i

   for i = 1 to n-1
       j = random integer from i to n inclusive
       exchange a(i) and a(j)
       (it is possible that i = j and no exchange takes place above)
   end

   now a contains a random permutation of n elements

This is far nicer than approaches I've seen (such as generating a random
list of numbers, sorting them, and returning the resulting permutation!)

- Jim
Technical Details
Message-ID: <1993Jan7.002653.21016@ryn.mro4.dec.com>
Path: arc1-ca.pugleaf.net!sparky!uunet!haven.umd.edu!decuac!pa.dec.com!engage.pko.dec.com!nntpd.lkg.dec.com!ryn.mro4.dec.com!3d.enet.dec.com!roth

Show Full Headers
Complete Article Headers
Newsgroups: comp.theory,sci.crypt,sci.math,rec.puzzles
Path: arc1-ca.pugleaf.net!sparky!uunet!haven.umd.edu!decuac!pa.dec.com!engage.pko.dec.com!nntpd.lkg.dec.com!ryn.mro4.dec.com!3d.enet.dec.com!roth
From: roth@3d.enet.dec.com (Jim Roth)
Subject: Re: Looking for random permutation generation algorithms
Message-ID: <1993Jan7.002653.21016@ryn.mro4.dec.com>
Sender: news@ryn.mro4.dec.com (USENET News System)
Organization: Digital Equipment Corporation
Date:  6 JAN 93 19:24:11    
Lines: 27