How does constraint solver randomize

In reply to smukerji:

The expression in the constraints can take only one operator at a time.

for example, if you want pkt.a==pkt.b==pkt.c==pkt.d then I hope the following solution works.

module tb;
class packet;
rand bit [4:0] a,b,c,d;

endclass

initial
begin
packet pkt;
pkt = new();
if(pkt.randomize() with {pkt.a == pkt.b, pkt.b == pkt.c;})
$display(“a is %h, b is %h, c is %h,d is %h \n”, pkt.a, pkt.b, pkt.c, pkt.d);
if(pkt.randomize() with {pkt.a == pkt.b, pkt.b == pkt.c, pkt.c == pkt.d;})
$display(“a is %h, b is %h, c is %h,d is %h \n”, pkt.a, pkt.b, pkt.c, pkt.d);

end

endmodule

Please correct me if I am wrong.