diff options
author | Karl Berry <karl@freefriends.org> | 2018-12-15 22:41:11 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2018-12-15 22:41:11 +0000 |
commit | b0897576fe379e6d9a0edd6aaa598b8b0d96cfbd (patch) | |
tree | c5abfb20f4ad066073832322369d08177a67b904 /Master/texmf-dist/tex | |
parent | f1106de84d0ef7b3aa67dc256c8bcc03aa36b116 (diff) |
luarandom (15dec18)
git-svn-id: svn://tug.org/texlive/trunk@49419 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex')
-rw-r--r-- | Master/texmf-dist/tex/lualatex/luarandom/luarandom.sty | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/lualatex/luarandom/luarandom.sty b/Master/texmf-dist/tex/lualatex/luarandom/luarandom.sty new file mode 100644 index 00000000000..a0be7f3c498 --- /dev/null +++ b/Master/texmf-dist/tex/lualatex/luarandom/luarandom.sty @@ -0,0 +1,76 @@ +% $Id: luarandom.sty 862 2018-12-15 16:25:55Z herbert $ +%% +%% This is file `luarandom.sty'. +%% +%% IMPORTANT NOTICE: +%% +%% luarandom Copyright (C) 2019- Herbert Voss <hvoss@tug.org> +%% +%% This package may be distributed under the terms of the LaTeX Project +%% Public License, as described in lppl.txt in the base LaTeX distribution. +%% Either version 1.3 or, at your option, any later version. +%% + +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{luarandom}[2018/12/16 v 0.01 package for random numbers] +\RequirePackage{ifluatex} +\def\lua@nl{^^J\space\space\space\space} +\newcommand\lua@PackageError[2]{\PackageError{luarandom}{\lua@nl #1^^J}{#2}} +\ifluatex\else + \lua@PackageError{% + "You are not using LuaTeX\app@nl + the lua definitions will not be available!} + {If you run the source from a GUI then set + the compiler "lualatex" in the + preferences.}% +\fi + +\RequirePackage{luacode} +\begin{luacode*} +RandomNumbers = {} + +function allFound(R) + local r1 = R[1] + local i + for i=2,#R do + r1 = r1 and R[i] + if not r1 then return false end + end + return true +end + +function makeRandomNumberList(l,r,n) + RandomNumbers = {} + math.randomseed(os.time()) + local R = {} + local i,j + for i=1,n do R[i] = false end + repeat + local rand = math.random(l,r) + if not R[rand] then + R[rand] = true + RandomNumbers[#RandomNumbers+1] = rand + end + until allFound(R) +end + +function makeSimpleRandomNumberList(l,r,n) + RandomNumbers = {} + math.randomseed(os.time()/3) + local i + for i=1,n do RandomNumbers[#RandomNumbers+1] = math.random(l,r) end +end + +function getRand(i) + tex.print(RandomNumbers[i]) +end +\end{luacode*} + +\def\makeRandomNumberList#1#2#3{% + \directlua{makeRandomNumberList(#1,#2,#3)}} +\def\makeSimpleRandomNumberList#1#2#3{% + \directlua{makeSimpleRandomNumberList(#1,#2,#3)}} +\def\getNumberFromList#1{\directlua{getRand(#1)}} + + +\endinput |