# [NTG-context] How to print a random whole number between x and y?

Wolfgang Schuster wolfgang.schuster.lists at gmail.com
Fri Jun 17 17:21:06 CEST 2022

Joel via ntg-context schrieb am 17.06.2022 um 16:10:
> I was using this code for a long time in my document. I have a PDF
> with 10 pages, and this would randomly display one of those pages:
>
>         \ctxlua{math.randomseed( os.time() )}
>
>         \getrandomnumber \n {1} {10}
>
>      \placefigure[force,
> none]{}{\framed[frame=off]{\externalfigure[comic.pdf][page=\n,
> width=\textwidth]}}
>
> For reasons I cannot understand, after an update of ConTeXt, the code
> no longer works, though trying to reduce it to a minimum working
> example it works, so I cannot figure out what is wrong in my code.
>
> Undefined control sequence
>
> <argument> ...domseed( os.time() )} \par \getrandomnumber \n
> {1} {10} \par \placefigure...
> \doifsomething #1->\edef \m_syst_string_one {#1
> }\ifx \m_syst_string_one \emp...
> \event ... {#6}{{\bf #6}} \par \doifsomething {#7}
> {#7 } \par \doifsomething ...
>
>
> Is there another solution for generating a random whole number between
> 1 and 10?

Without a better example there is no way to tell what's wrong with your
document. The most likely answer is that you try to expand part of your
code which contains the \getrandomnumber line but since \n isn't defined
yet you get the error message.

What you can try is to replace \getrandomnumber and "page=\n" with
"page=\randomnumber{...}{...}".

\startbuffer[dummyfile]
\dorecurse{10}{\centerbox{\definedfont[Sans sa 10]Page \recurselevel}}
\stopbuffer

\setuplayout[page]

\starttext

%\getrandomnumber\n{1}{10}
%\typesetbuffer[dummyfile][page=\n]

\typesetbuffer[dummyfile][page=\randomnumber{1}{10}]

\stoptext

Wolfgang
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.ntg.nl/pipermail/ntg-context/attachments/20220617/dd7d8a40/attachment.htm>