private void assignFreeCardToPlayer(final Player p, boolean assignOriginal) { for (; ; ) { long skip = Math.round(Math.random() * (System.nanoTime() & 255)); long s = 0; for (final PlayCard c : playcards) { if (s++ >= skip) { if (c.isFree()) { c.setOwner(p); log.info("card assigned: card=" + c.getKarte() + ", player=" + p.getId()); if (assignOriginal && this.original == null) { this.original = c.getKarte(); log.info("original assigned: card=" + c.getKarte()); } return; } } } } }