xsl-list
[Top] [All Lists]

Re: [xsl] Random number seed generation

2010-12-10 03:41:37
Follow up:

Still would like to know how to implement extensions in general. Any pointers?

On Fri, Dec 10, 2010 at 10:40 AM, Michel Hendriksen
<michel(_dot_)hendriksen(_at_)kensas(_dot_)nl> wrote:
Thnx

This looks like something that I could work with. I only don't know
how this will be effecting performance as I would need to call it
often.

Maybe I can combine this with keeping track of the seed in some parts
of the code.

Michel Hendriksen
Kensas bv

On Fri, Dec 10, 2010 at 12:38 AM, TW <zupftom(_at_)googlemail(_dot_)com> 
wrote:
I don't know whether this would give reasonably results, but what
about generating a seed from the result of generate-id()?  Maybe like
so, calculating kind of a digit sum (based on the the order the
variables occur in "name-chars"):

<template name="create-seed">
 <param name="string" select="generate-id(.)"/>
 <param name="preliminary-seed" select="0"/>
 <param name="maximum-value" select="100"/>

 <variable name="name-chars"
select="':ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz-.0123456789'"/>

 <choose>
   <when test="string-length($string) != 0">
     <call-template name="create-seed">
       <with-param name="string" select="substring($string,2)"/>
       <with-param name="preliminary-seed"
         select="($preliminary-seed + string-length(

substring-before($name-chars,substring($string,1,1))
                                      )
                 ) mod $maximum-value"/>
       <with-param name="maximum-value" select="$maximum-value"/>
     </call-template>
   </when>
   <otherwise>
     <value-of select="$preliminary-seed"/>
   </otherwise>
 </choose>
</template>


Of course this only makes sense if you need at most one random number
per source document node (after all, the random number will be the
same if the seed is the same).  Or you can pass the old seed as
parameter "preliminary-seed" when you create a new seed.

Thomas W.


2010/12/9 Michel Hendriksen <michel(_dot_)hendriksen(_at_)kensas(_dot_)nl>:
That is not an issue as that would be fixed easily. But I need to call
the random functions from different places and that code would have to
keep track of the last generated number. Also, when scaling the value
(p.e.) to boolean I would need the original unscaled value for the
next call. So results from any functions like that would have to
return (combined) two values or would need two calls, one for the
random number and one for the scaling.

So time in millis from 1970 something would be a nice 'seed' and much
easier to work with.

Michel

On Thu, Dec 9, 2010 at 4:58 PM, Tony Graham
<Tony(_dot_)Graham(_at_)menteithconsulting(_dot_)com> wrote:
On Thu, Dec 09 2010 14:04:57 +0000, 
michel(_dot_)hendriksen(_at_)42(_dot_)nl wrote:
I'm using Saxon9he processor XSLT 2.0, and I am trying to get some
random numbers. I'm currently using fxsl/random for this. The problem
is that it needs a seed.
I tried using current time stuff but that doesn't change during the
transfomation using the stylesheet.. So I tried an extension function
to cal to Java but that doesn't seem to work. Examples are probably

That would require "Extensibility using reflexion", which isn't in Saxon
9 HE.  See http://www.saxonica.com/feature-matrix.xml (ideally after it
has a stylesheet PI added to it).

XSLT 1.0 but should be ok.

Is this possible on Home Edition? Did things change in transition to
2.0? Is there an other way to get some seed for the random function? I

More in the transition from 'B' to 'HE', IIRC.

can't resuse the value as I would have to keep it somewhere in between
calls. One idea would be to use generate-id() but that gives a string.
Could be useful when this is always convertible to a number.

I'm running the processor from a Java application now. It is a
learning project and should be able to run Genetic Algorithm
functionality, so lots of random stuff is needed.

Just pass a seed generated with Java as a stylesheet parameter.

Regards,


Tony Graham                         
Tony(_dot_)Graham(_at_)MenteithConsulting(_dot_)com
Director                                  W3C XSL FO SG Invited Expert
Menteith Consulting Ltd                               XML Guild member
XML, XSL and XSLT consulting, programming and training
Registered Office: 13 Kelly's Bay Beach, Skerries, Co. Dublin, Ireland
Registered in Ireland - No. 428599   http://www.menteithconsulting.com
 --  --  --  --  --  --  --  --  --  --  --  --  --  --  --  --  --
xmlroff XSL Formatter                               http://xmlroff.org
xslide Emacs mode                  http://www.menteith.com/wiki/xslide
Unicode: A Primer                               urn:isbn:0-7645-4625-2

--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: 
<mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--



--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: 
<mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--



--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: 
<mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--




--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--