How to generate a continuous stream of 32 bit unique data

Is there a mechanism to continuously generate a 32 bit unique data for every 100 packets received? I have this below code which can generate 100 unique data, but how do i make it a stream of incoming data. This has to be achieved by a single call of obj.randomize(). And every sub-block of 100 data when picked from a stream needs to be unique as well.

class rand_gen;
    rand bit[31:0] data[$];

    constraint c_size {data.size() == 100;}
    constraint c_uniq { unique{data}; }

endclass

module test;
 initial begin
    rand_gen gen;
    
    gen = new();
    gen.randomize();

end

In reply to shaky005:

Please use code tags making your code easier to read. I have added them for you.

You need to tell us what you define as a “stream” of data. And what do you mean by “sub-block picked from a stream” Are these overlapping or serial?

Perhaps you can explain with a smaller example (8-bit data and 10 words of data).

if you meant one packet is 32 bit wide and serially there are 100 packets which shall come out as in one go you can pack them in post randomize call to get a stream of 100 data packets each 32bit wide.
Let me know if that makes sense .
thanks

Let me know if this satisfies your requirement.

class packet;
  rand bit[7:0] data;
  bit[7:0] historyQ[$];
  
  //Data generated should not be present in the last 100 transactions 
  constraint c1 {
    !(data inside {historyQ});
  }
  
  function void post_randomize();
    if(historyQ.size == 100)
      historyQ.pop_front;
    historyQ.push_back(data);
  endfunction 
   
endclass
            
module top;
  initial begin 
    packet p = new();
    repeat(120) begin 
      p.randomize();
      $display("%0d",p.data);
    end 
  end 
endmodule