Reccently I did something random in ctxlua. I post it in the hope it will be 
useful.

Hans van der Meer

\startluacode
        -- Define our namespace as hvdm 
        hvdm = hvdm or {} 

        -- Return random series of numbers 1..n depending on the number of 
arguments
        function hvdm.randomseries (n, straight)
                local done = {}
                for i = 1, n do
                        done[i] = i
                end
                if straight == "false" then
                        return table.concat(done,",")
                end
                local result = ""
                for i = n, 2, -1 do
                        local r = math.random(i)
                        result = result .. done[r] .. ","
                        table.remove(done,r)
                end
                result = result .. done[1]
                return result
        end
\stopluacode
\def\RandomSeed#1{\directlua{math.randomseed(#1)}}
\def\RandomValue{\directlua{tex.print(math.random())}}
\def\RandomRange#1{\directlua{tex.print(math.random(#1))}}
\def\RandomSeries[#1]#2{\ctxlua{tex.print(hvdm.randomseries(#2,"#1"))}%


On 5 jan. 2012, at 21:05, Otared Kavian wrote:

> Hi all,
> 
> I need to define numerical coefficients (essentially at random) and then use 
> them with commands, say like \CoeffAlpha, \CoeffBeta, and so on.
> More precisely, how can I define the command \RandomCoeff, so that 
> \RandomCoeff{Beta}{1}{10} yields a command named \CoeffBeta, which is a 
> random number chosen between 1 and 10?
> 
> I tried to use the following approach, but could not make it work:
> 
> %%% begin random-coeff.tex
> \setuprandomize[2012] % set a seed 
> 
> \ctxlua{CoeffAlpha = math.random(1,10) ;}
> \def\CoeffAlpha{\ctxlua{tex.print(CoeffAlpha)}}
> 
> %%%%%
> \define[3]\RandomCoeff{%
>       \ctxlua{a = math.random(#2,#3)}
> %     \csname{Coeff#1}\endcsname{\ctxlua{tex.print(a)}} %% this line does not 
> work as expected...
>       }
> 
> \starttext
> \CoeffAlpha
> 
> \RandomCoeff{Beta}{1}{10}
> 
> \ctxlua{tex.print(a)}
> 
> %\CoeffBeta
> 
> \stoptext
> %%% end random-coeff.tex
> 
> Thanks in advance for any suggestion or hint.
> Best regards: OK
> 
> ___________________________________________________________________________________
> If your question is of interest to others as well, please add an entry to the 
> Wiki!
> 
> maillist : [email protected] / http://www.ntg.nl/mailman/listinfo/ntg-context
> webpage  : http://www.pragma-ade.nl / http://tex.aanhet.net
> archive  : http://foundry.supelec.fr/projects/contextrev/
> wiki     : http://contextgarden.net
> ___________________________________________________________________________________

___________________________________________________________________________________
If your question is of interest to others as well, please add an entry to the 
Wiki!

maillist : [email protected] / http://www.ntg.nl/mailman/listinfo/ntg-context
webpage  : http://www.pragma-ade.nl / http://tex.aanhet.net
archive  : http://foundry.supelec.fr/projects/contextrev/
wiki     : http://contextgarden.net
___________________________________________________________________________________

Reply via email to