\documentclass[fontsize=11pt]{scrartcl}
% Pakete für LuaLaTeX:
\usepackage{polyglossia} 
\setmainlanguage{german}
\usepackage{amsmath}        % <------ vor unicode-math laden, sonst FEHLER!!
\usepackage{unicode-math}   % lädt auch fontspec!
\usepackage{luacode}  
\usepackage{multicol} 
% Zeichensätze
\setmainfont{Linux Libertine O}
\setsansfont{Linux Biolinum O}
\setmonofont[Scale=MatchLowercase]{Inconsolata}
\setmathfont{Asana-Math}
\newcommand{\wert}[1]{\directlua{tex.sprint(#1)}}
% Lua erzeugt Pseudozufallszahlen und rechnet
\begin{luacode*}
math.randomseed(os.time())
function addaufgabe(hi)
tex.print{[[\begin{array}{rcrcr}]]}
for k = 1, hi do	
    a = math.random(11,50) 
	b = math.random(11,50)
    tex.print{a, '&+&', b, '&=&', a+b, '\\\\'}
	end
tex.print{[[\end{array}]]}
end    
function subaufgabe(hi)
tex.print{[[\begin{array}{rcrcr}]]}
for k = 1, hi do	
    a = math.random(11,50) 
	b = math.random(11,50)
    tex.print{a+b, '&-&', b, '&=&', a, '\\\\'}
	end
tex.print{[[\end{array}]]}
end   
function multaufgabe(hi)
tex.print{[[\begin{array}{rcrcr}]]}
for k = 1, hi do	
    a = math.random(5,20) 
	b = math.random(5,20)
	tex.print{a, '&\\cdot&', b, '&=&', a*b, '\\\\'}
    end
tex.print{[[\end{array}]]}
end    
function divaufgabe(hi)
tex.print{[[\begin{array}{rcrcr}]]}
for k = 1, hi do	
    a = math.random(5,20) 
	b = math.random(2,20)
    tex.print{a*b, '&:&', b, '&=&', a, '\\\\'}
	end
tex.print{[[\end{array}]]}
end   
\end{luacode*}
\begin{document}
\title{Grundrechenarten}
\author{Werner Pronkow}
\maketitle
\thispagestyle{empty}
\setlength{\columnseprule}{0.3pt}
\begin{multicols}{4}
\subsection*{Addition}
\(\directlua{addaufgabe(30)}\)
\subsection*{Subtraktion}
\(\directlua{subaufgabe(30)}\)
\subsection*{Multiplikation}
\(\directlua{multaufgabe(30)}\)
\subsection*{Division}
\(\directlua{divaufgabe(30)}\)
\end{multicols}
\end{document}