if not modules then modules = { } end modules ['supp-ran'] = { version = 1.001, comment = "companion to supp-ran.mkiv", author = "Hans Hagen, PRAGMA-ADE, Hasselt NL", copyright = "PRAGMA ADE / ConTeXt Development Team", license = "see context related readme files" } -- We cannot ask for the current seed, so we need some messy hack -- here. local report_system = logs.reporter("system","randomizer") commands = commands or { } local commands = commands local math = math local random, randomseed, round, seed, last = math.random, math.randomseed, math.round, false, 1 function math.setrandomseedi(n,comment) if not n then --~ n = 0.5 -- hack end if n <= 1 then n = n*1073741823 -- maxcount end n = round(n) if false then report_system("setting seed to %s (%s)",n,comment or "normal") end randomseed(n) last = random(0,1073741823) -- we need an initial value end function commands.getrandomcounta(min,max) last = random(min,max) context(last) end function commands.getrandomcountb(min,max) last = random(min,max)/65536 context(last) end function commands.setrandomseed(n) last = n math.setrandomseedi(n) end function commands.getrandomseed(n) context(last) end -- maybe stack function commands.freezerandomseed(n) -- print("<<<<",seed,last) if seed == false or seed == nil then seed = last math.setrandomseedi(seed,"freeze",seed) end if n then randomseed(n) end end function commands.defrostrandomseed() -- print(">>>>",seed,last) if seed ~= false then math.setrandomseedi(seed,"defrost",seed) -- was last (bug) seed = false end end