so wie ich das sehe, machst du mit:
if(rand==i)continue;
dem elent klar... bleib wo du bist, ich beschäftige mich mit dem nächsten.... wäre es nicht besser, dann lieber nochmal zu würfeln, und nicht das element an gleicher stelle zu lassen? Nur so ein Gedankenanstoß....