Constraint to randomize elements of an array such that at least one is a multiple of 4

HI All,

I want to write a constraint to randomize an array with the following requirements:

a) Sum of all array elements must be 17
b) Array must have at least one element which is multiple of 4.
c) Size of an array could be random

class c;
  rand bit[7:0] arr[];

  constraint c1_arr_sz { arr.sum() with (int'(item)) == 17; 
                        arr.size() inside {[2:10]}; }
  constraint c2_arr_m4 { arr.or() with (item % 4 == 0); }

endclass

module m1;
  c obj;
  initial
   begin
     obj=new();
     repeat(5)
     begin
      obj.randomize();
      $display("array is %p",obj);
     end
    end
endmodule

Output of the code:

array is ‘{arr:’{'h0, 'h3, 'h0, 'h0, 'h0, 'he, 'h0, 'h0, 'h0}}
array is ‘{arr:’{'h8, 'h8, 'h0, 'h0, 'h0, 'h1}}
array is ‘{arr:’{'h5, 'h7, 'h1, 'h4}}
array is ‘{arr:’{'h4, 'h1, 'h7, 'h3, 'h2}}
array is ‘{arr:’{'h1, 'h0, 'h3, 'h1, 'h0, 'h0, 'hb, 'h0, 'h0, 'h1}}

Multiple of 4, is being satisifed only in 2nd, 3rd and 4th iteration.
But it should be satisfied in 1st and last iteration also, may I know the reason?
How to update the code to get all requirements in all iterations.

Kindly share your opinion

Thank You

In reply to Thirumalesh Kumar:

0 % 4 == 0