blob: 4bcff6a9449c6d8c41ac36cc4a5f3b18c5f87213 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
|
%D \module
%D [ file=supp-ran,
%D version=2008-10-31,
%D title=\CONTEXT\ Support Macros,
%D subtitle=Random Number Generation,
%D author=Hans Hagen,
%D date=\currentdate,
%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
%C details.
\writestatus{loading}{ConTeXt Support Macros / Random Number Generation}
%D This module is downward compatible in the sense that we've kept the user
%D interface (which uses intermediate variables).
%D
%D \starttyping
%D \type{new}: \dorecurse{10}{\randomnumber{1}{100} }\par
%D \setrandomseed{24}\type{set}: \dorecurse{10}{\randomnumber{1}{100} }\par
%D \setrandomseed{24}\type{set}: \dorecurse{10}{\randomnumber{1}{100} }\par
%D \setrandomseed{24}\type{set}: \dorecurse{10}{\randomnumber{1}{100} }\par
%D \pushrandomseed \type{new}: \dorecurse{10}{\randomnumber{1}{100} }\par
%D \poprandomseed \type{old}: \dorecurse{10}{\randomnumber{1}{100} }\par
%D \type{new}: \dorecurse{10}{\randomnumber{1}{100} }\par
%D \stoptyping
\registerctxluafile{supp-ran}{autosuffix}
\unprotect
\permanent\protected\def\getrandomcount #1#2#3{#1=\clf_getrandomnumber\numexpr#2\relax\numexpr#3\relax\relax}
\permanent\protected\def\getrandomdimen #1#2#3{#1=\clf_getrandomdimen\dimexpr#2\relax\dimexpr#3\relax\scaledpoint\relax}
\permanent\protected\def\getrandomnumber#1#2#3{\edef#1{\clf_getrandomnumber\numexpr#2\relax\numexpr#3\relax}}
\permanent\protected\def\getrandomfloat #1#2#3{\edef#1{\clf_getrandomfloat\dimexpr#2\relax\dimexpr#3\relax}}
\permanent\protected\def\setrandomseed #1{\clf_setrandomseed\numexpr#1\relax}
\permanent\protected\def\getrandomseed #1{\edef#1{\clf_getrandomseed}}
\permanent\protected\def\newrandomseed {\clf_getrandomseed}
%permanent\protected\def\pushrandomseed {\clf_pushrandomseed}
%permanent\protected\def\poprandomseed {\clf_poprandomseed}
%permanent\protected\def\reuserandomseed {\clf_reuserandomseed} % within push/pop
\aliased\let\freezerandomseed \pushrandomseed
\aliased\let\defrostrandomseed\poprandomseed
\setnewconstant \mpscaledmax 4095 % for old times sake
\permanent\def\randomnumber #1#2{\clf_getrandomnumber\numexpr#1\relax\numexpr#2\relax}
\permanent\def\mprandomnumber {\clf_getrandomnumber\zerocount\mpscaledmax}
%D \startbuffer
%D \enabletrackers[system.randomizer.details]
%D
%D \newrepeatablerandom\MyRandom {Welcome 2 America}
%D \newrepeatablerandom\MyRandomN{\randomnumber{0}{1000}}
%D \newrepeatablerandom\MyRandomM{\randomnumber{0}{1000}}
%D
%D \cldcontext{utilities.randomizer.getrepeatableseed()}\par
%D \cldcontext{utilities.randomizer.getrepeatableseed("default")}\par
%D \cldcontext{utilities.randomizer.getrepeatableseed("MyRandom")}\par
%D \cldcontext{utilities.randomizer.getrepeatableseed("MyRandomN")}\par
%D \cldcontext{utilities.randomizer.getrepeatableseed("MyRandomM")}\par
%D
%D \dorecurse{10}{\MyRandom\par}
%D
%D \startMPcode
%D randomseed := repeatablerandom("MyRandom") ;
%D draw image (
%D for i=1 upto 10000 :
%D draw origin randomized 100 ;
%D endfor ;
%D ) withpen pencircle scaled 1 ;
%D \stopMPcode
%D
%D \startluacode
%D context(utilities.randomizer.getrepeatableseed("MyRandom"))
%D context.par()
%D local rep = utilities.randomizer.getrepeatable("MyRandom")
%D for i=1,5 do
%D context(rep())
%D context.par()
%D end
%D \stopluacode
%D \stopbuffer
%D
%D \typebuffer \blank \getbuffer \blank
\protect \endinput
|