you have to use it since PostgreSQL does not support limit within a with expression.
WITH RECURSIVE
t AS (
SELECT 0 id
UNION ALL
SELECT id + 1
FROM t
WHERE id < 1000000
)
SELECT id, random() FROM t;
It returns 1000001 rows, but so does cribwi's.