public CycList randomPermutation() {
    final Random random = new Random();
    int randomIndex = 0;
    final CycList remainingList = (CycList) this.clone();
    final CycList permutedList = new CycList();
    if (this.size() == 0) {
      return remainingList;
    }
    while (true) {
      if (remainingList.size() == 1) {
        permutedList.addAll(remainingList);
        return permutedList;
      }
      randomIndex = random.nextInt(remainingList.size() - 1);
      permutedList.add(remainingList.get(randomIndex));
      remainingList.remove(randomIndex);
    }
  }