-- Created on 2010/7/4 by DUQIANG
declare
-- Local variables here
type t_tab is table of number index by pls_integer;
v_tab1 t_tab;
v_tab2 t_tab;
k int :=52; ---随机数个数
v_random int;
begin
-- Test statements here
for j in 1 .. k loop
v_tab1(j) := j;
end loop;
for i in 1 .. k loop
v_random := trunc(dbms_random.value(1, v_tab1.count + 1));
v_tab2(i) := v_tab1(v_random);
v_tab1.delete(v_random);
if v_tab1.count <> 0 then
for j in v_random .. v_tab1.last - 1 loop
if v_random <= v_tab1.count then
v_tab1(j) := v_tab1(j + 1);
end if;
end loop;
if v_random <= v_tab1.count then
v_tab1.delete(v_tab1.count);
end if;
end if;
end loop;
for j in 1 .. k loop
dbms_output.put_line(v_tab2(j) || ',');
end loop;
end;