In reply to bachan21:
int addr_q[$]; // declaration of a queu to store addresses
in the body method fill the queue with the proper addresses in the right order (using an assigment pattern or a loop.
task body();
int tmp_addr;
addr_q = '{addr1, addr2, ...};
repeat (10) begin
req = packet::type_id::create("req");
tmp_addr = addr_q.pop_front(); // returns the first element of this queue
start_item(req);
void`(randomize() with sel == 1; en == 1; addr == tmp_addr;);
finish_item(req);
end
endtask