In reply to dave_59:
It does not even do this -
int'(csum[1]) + int'(csum[3]) + int'(csum[5]) + ...int'(csum[15])) = 8
for some reason. I did expect atleast the odd indices to be 1. But here is one solution of randomization using this contsraint
cnum.sum with (int'(item.index%2?item:!item))==8;
'{'h0, 'h1, 'h0, 'h1, 'h1, 'h0, 'h1, 'h0, 'h1, 'h0, 'h0, 'h0, 'h1, 'h1, 'h0, 'h1}