# PRN in range(0,n) create or replace function prn(n) as trunc(random() * n)::BIGINT; # Print numbers in range(0,n) as per the task description create or replace function task(n) as table ( with recursive cte as ( select prn(n) as rand, false as stop union all select prn(n) as rand, rand = 10 as stop from cte where stop != true ) select rand from cte where stop = false ); .print A sample run: from task(20); .print A likely shorter one: from task(11);