Postgresql random() fonksiyonu ile 0-1 arasında rastgele sayı döner.
5 tane rastgele sayı dönelim:
SELECT random() FROM generate_series(1,5); random ------------------- 0.595817462075502 0.350072300527245 0.989073566626757 0.700899163261056 0.940509075298905 (5 ROWS)
Rastgele sayıları 1-100 arasına getirelim
SELECT random() * 99 + 1 FROM generate_series(1,5); ?COLUMN? ------------------ 45.0829070857726 96.3123500789516 30.1867960244417 63.0484761050902 44.2645903658122 (5 ROWS)
trunc ile sayıları yuvarlayalım
SELECT trunc(random() * 99 + 1) FROM generate_series(1,5); trunc ------- 21 6 2 57 58 (5 ROWS)
Şimdi bu işleri yapan bir fonksiyon yazalım
CREATE OR REPLACE FUNCTION get_random_number(INTEGER, INTEGER) RETURNS INTEGER AS $$ DECLARE start_int ALIAS FOR $1; end_int ALIAS FOR $2; BEGIN RETURN trunc(random() * (end_int-start_int) + start_int); END; $$ LANGUAGE 'plpgsql' STRICT;
Şimdi deneyelim
SELECT get_random_number(1, 100); get_random_number ------------------- 11 (1 ROW) SELECT get_random_number(45, 46); get_random_number ------------------- 45 (1 ROW) SELECT get_random_number(300, 400); get_random_number ------------------- 372 (1 ROW) SELECT MIN(get_random_number(100, 1000)), MAX(get_random_number(100, 1000)) FROM generate_series(1,100000); MIN | MAX -----+----- 100 | 999 (1 ROW)
Bir cevap yazın