public static void shuffle()

in commons-rng-sampling/src/main/java/org/apache/commons/rng/sampling/ListSampler.java [97:118]


    public static <T> void shuffle(UniformRandomProvider rng,
                                   List<T> list) {
        if (list instanceof RandomAccess || list.size() < RANDOM_ACCESS_SIZE_THRESHOLD) {
            // Shuffle list in-place
            for (int i = list.size(); i > 1; i--) {
                swap(list, i - 1, rng.nextInt(i));
            }
        } else {
            // Shuffle as an array
            final Object[] array = list.toArray();
            for (int i = array.length; i > 1; i--) {
                swap(array, i - 1, rng.nextInt(i));
            }

            // Copy back. Use raw types.
            final ListIterator it = list.listIterator();
            for (final Object item : array) {
                it.next();
                it.set(item);
            }
        }
    }