Java Collection Random Element pollRandom(Collection collection, Random rnd)

Here you can find the source of pollRandom(Collection collection, Random rnd)

Description

Returns a random element from a collection.

License

Apache License

Parameter

Parameter Description
collection The collection from which we want to pick a random element
rnd The random object

Return

A random element

Declaration

public static <K> K pollRandom(Collection<K> collection, Random rnd) 

Method Source Code

//package com.java2s;
/*/* w w w .j a  v  a  2s . c om*/
 * Copyright 2009 Thomas Bocek
 * 
 * Licensed under the Apache License, Version 2.0 (the "License"); you may not
 * use this file except in compliance with the License. You may obtain a copy of
 * the License at
 * 
 * http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
 * License for the specific language governing permissions and limitations under
 * the License.
 */

import java.util.ArrayList;

import java.util.Collection;

import java.util.List;

import java.util.Random;

public class Main {
    /**
     * Returns a random element from a collection. This method is pretty slow O(n), but the Java collection framework
     * does not offer a better solution. This method puts the collection into a {@link List} and fetches a random
     * element using {@link List#get(int)}.
     * 
     * @param collection
     *            The collection from which we want to pick a random element
     * @param rnd
     *            The random object
     * @return A random element
     */
    public static <K> K pollRandom(Collection<K> collection, Random rnd) {
        int size = collection.size();
        if (size == 0) {
            return null;
        }
        int index = rnd.nextInt(size);
        List<K> values = new ArrayList<K>(collection);
        K retVal = values.get(index);
        // now we need to remove this element
        collection.remove(retVal);
        return retVal;
    }
}

Related

  1. getRandomNumber(Collection collection, int number)
  2. nextItem(Collection items, Random random)
  3. oneOf(Collection array)
  4. peekRandom(Collection collection, Random rnd)
  5. pickOneRandomly(Collection from)
  6. random(Collection collection)
  7. random(Collection coll)
  8. random(Collection coll)
  9. randomElement(Collection coll)