[xsl] Re: Random?

Subject: [xsl] Re: Random?
From: Dimitre Novatchev <dnovatchev@xxxxxxxxx>
Date: Mon, 2 May 2005 20:55:01 +1000
Hi Ali,

On 5/2/05, Ali Choumane <ali.choumane@xxxxxxx> wrote:
> Hi Dimitre,
> first, thanks for your help,
> second,
> I am using the seconds part of the current time -- as the value of the
pSeed
> parameter (by using the library  of exslt).
>
> But the problem is : I am calling the function randomSequence several times
> per second ,so I have the same value of the parameter pSeed to the
> randomSequence.
>
> I want to use the third part of the current time (milliseconds) ??? its
> possible?? I can't find anything!

It seems that you are generating a lot of sequences of random numbers
-- with what length?

I would suggest two ways around the problem:

   1. Generate only one (but sufficiently long) sequence of randoms,
then use its subsequences as needed.

   2. In case you'd need N sequences of random numbers, then generate
a sequence of N random numbers and use these as the seeds to generate
the corresponding N sequences.


Cheers,
Dimitre Novatchev.

>
>
> Quoting Dimitre Novatchev <dnovatchev@xxxxxxxxx>:
>
> > Hi Ali,
> >
> > On 4/29/05, Ali Choumane <ali.choumane@xxxxxxx> wrote:
> > > Hi Dimitre,
> > >
> > > I am using the template "randNext" in random.xsl :
> > >
> > > ...
> > > <sentence>
> > > <xsl:attribute name="stamp">
> > >     <xsl:call-template name="randNext">
> > >         <xsl:with-param name="arg1" select="1"/>
> > >     </xsl:call-template>
> > >  </xsl:attribute>
> > >  <xsl:attribute name="state">nonDesamb</xsl:attribute>
> > >  <xsl:value-of select="concat($arg1/sentence[last()], $arg2)"/>
> > > </sentence>
> > > ...
> > >
> > > and this is a part of result of transformation:
> > > ...
> > >  <sentence stamp="39022" state="nonDesamb">111 111 111</sentence>
> > >  <sentence stamp="39022" state="nonDesamb"> 222 222</sentence>
> > >  <sentence stamp="39022" state="nonDesamb"> 333 333 333</sentence>
> > >  <sentence stamp="39022" state="nonDesamb"> 444 444 444</sentence>
> > >  <sentence/>
> > >  <sentence stamp="39022" state="nonDesamb">555 555 555</sentence>
> > >  <sentence stamp="39022" state="nonDesamb"> 666 666 666</sentence>
> > >  <sentence stamp="39022" state="nonDesamb"> 777 777 777</sentence>
> > >  <sentence stamp="39022" state="nonDesamb"> 888 888 888, 999
> > 999999</sentence>
> > > ...
> > >
> > > As the result show, "stamp" it's not a key now. I think because "arg1"
is
> > > fixed.
> > >
> > > and I am using the template "randomSequence" in random.xsl, but it
can't
> > > resolve the problem.
> >
> > randomSequence produces a sequence of (the pLength parameter) N
> > numbers. If the seed (the pSeed parameter) is the same on two
> > invocations of randomSequence, the two produced sequences are, of
> > course, the same.
> >
> > > I think , if I put a variable value of "arg1" , can resolve the
problem?
> >
> > In order to achieve truly "random" results, the transformation has to
> > use some non-fixed number, such as the seconds part of the current
> > time -- and this can be passed as a parameter to the transformation by
> > the external code that invokes it.
> >
> > Then this number can be used as a seed -- to be passed as the value of
> > the pSeed parameter.
> >
> > > But how, when we can't change the value of variables in XSLT?
> >
> > We can't and actually we don't need to.
> >
> > Cheers,
> > Dimitre novatchev.
> >
>
> Ali CHOUMANE
> M2R III ,Univ Joseph fourrier, UFR IMA
> WAM/INRIA & GETA/CLIPS
> portable.      06 71 55 80 65
> Bureau(INRIA). 04 76 61 54 13
> Email. ali.choumane@xxxxxxx
>
> -------------------------------------------------
> envoyi via Webmail/IMAG !

Current Thread