In reply to dve12:
In the second foreach you meant a[i]!=r_index1 && a[j]!=r_index1 instead of i!=r_index1 && j!=r_index1.
module abc;
class aa;
rand int unsigned val[10];
rand int unsigned r_index1,r_index2,r_index3;
constraint s1 {
r_index1 inside {[0:9]};
r_index2 inside {[0:9]};
r_index3 inside {[0:9]};
r_index1 != r_index2;
r_index1 != r_index3;
r_index3 != r_index2;
foreach(val[i]){
val[i] < 10 ; }
foreach(val[i]){
foreach(val[j]){
if(i != j && val[i]!=r_index1 && val[j]!=r_index1)
val[i] != val[j];
}
}
val[r_index1] == val[r_index2];
val[r_index1] == val[r_index3];
}
endclass
aa a1 ;
initial begin
a1 = new();
assert(a1.randomize());
$display(a1.r_index1, a1.r_index2,a1.r_index3);
$display(a1.val);
end
endmodule