Я бы не стал так подходить к проблеме в PostgreSQL. Кажется, что-то в этом направлении имеет больше смысла.
-- Returns a random integer in the interval [n, m].
CREATE OR REPLACE FUNCTION random_integer(integer, integer)
RETURNS integer AS
$BODY$
select trunc( $1 + (($2*random()) ))::integer
$BODY$
LANGUAGE sql VOLATILE
Затем, чтобы выбрать одно случайное целое число от 1 до 1000,
select random_integer(1, 1000);
Чтобы выбрать 100 случайных целых чисел от 1 до 1000,
select random_integer(1, 1000)
from generate_series(1,100);