Subject: Re: [xsl] How to Do Random "Shuffle"? From: "David Rudel fwqhgads@xxxxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> Date: Thu, 18 Sep 2014 09:04:20 -0000 |
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 > bbbbb > 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.
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] How to Do Random "Shuffle, Dimitre Novatchev dn | Thread | Re: [xsl] How to Do Random "Shuffle, Wolfgang Laun wolfga |
Re: [xsl] Can xsl:iterate be used i, Abel Braaksma (Exsel | Date | Re: [xsl] How to Do Random "Shuffle, Wolfgang Laun wolfga |
Month |