>>391
一応これなら動くけど、糞なやり方。
間違ったままでは悔しいから書き込んどきます。

for(cnt=0;cnt<4;cnt++)
{
one[cnt]=rand()%4+1;
end|=(shift<<(one[cnt]-1));

if(!(OldKey^end))
one[cnt]=0;

OldKey=end;
}

for(cnt=0;cnt<4;cnt++)
{
if(one[cnt]==0)
{
for(;one[cnt]==0;idx++)
{
if(!((end>>idx)&0x01))
one[cnt]=idx+1;
}
}
}