Subject: Re: [xsl] How to Do Random "Shuffle"? From: "Wolfgang Laun wolfgang.laun@xxxxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> Date: Thu, 18 Sep 2014 11:13:58 -0000 |
random:random-sequence(N) If this is supposed to produce a sequence of numbers in the range 1..N while expecting it to contain every number of that range exactly once: would this truly be a "random" sequence? I don't think so. -W On 18 September 2014 11:05, David Rudel fwqhgads@xxxxxxxxx < xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> wrote: > When I have to do this (essentially create a permutation of the numbers > from 1 to N), I combine random:random-sequence with saxon:sort > > I'm away right now so I'm not working on a machine with XSLT, so the > following syntax may be off, but I use: > > <xsl:variable name="rand" select="random:random-sequence(N)"/> > > <xsl:variable name="sorted.rand" select="saxon:sort($rand)"/> > > <xsl:variable name="permutation" select="$rand!index-of($sorted.rand,.)"/> > > The select attribute of the last can also be written as "for $i in $rand > return index-of($sorted.rand,$i)" . > > > On Saturday, September 13, 2014, Eliot Kimber ekimber@xxxxxxxxxxxx < > xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> wrote: > >> Using XSLT 2 I need to implement rendering of "match table" questions >> where you have two sets of items, the match item and the thing it matches >> to. I want to present this as a literal table, where the first column is >> the match-from items in source order and the second column is the match-to >> items, in random order. >> >> I think this is best characterized as a "shuffle" problem, where you want >> to reorder a list randomly but all items in the list must be accounted >> for. >> >> I can think of a recursive algorithm: given a list, generate a random >> integer between 1 and the list length, select that item and add it to the >> result list, then call this function on the original list minus the node >> you just selected. >> >> Is there an easier or more efficient way to do it? >> >> Thanks, >> >> Eliot >> ---------- >> Eliot Kimber, Owner >> Contrext, LLC >> http://contrext.com >> >> >> > > -- > > "A false conclusion, once arrived at and widely accepted is not dislodged > easily, and the less it is understood, the more tenaciously it is held." - > Cantor's Law of Preservation of Ignorance. > XSL-List info and archive <http://www.mulberrytech.com/xsl/xsl-list> > EasyUnsubscribe <-list/528976> (by > email <>)
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] How to Do Random "Shuffle, David Rudel fwqhgads | Thread | Re: [xsl] How to Do Random "Shuffle, David Rudel fwqhgads |
Re: [xsl] How to Do Random "Shuffle, David Rudel fwqhgads | Date | Re: [xsl] How to Do Random "Shuffle, David Rudel fwqhgads |
Month |