Here you can find the source of pickNAtRandom(List
public static <T> List<T> pickNAtRandom(List<T> vals, int n, long seed)
//package com.java2s; /* Soot - a J*va Optimization Framework * Copyright (C) 2007 Manu Sridharan/*from ww w . j av a 2 s. c o m*/ * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */ import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Random; public class Main { public static <T> List<T> pickNAtRandom(List<T> vals, int n, long seed) { if (vals.size() <= n) { return vals; } HashSet<T> elems = new HashSet<T>(); Random rand = new Random(seed); for (int i = 0; i < n; i++) { boolean added = true; do { int randIndex = rand.nextInt(n); added = elems.add(vals.get(randIndex)); } while (!added); } return new ArrayList<T>(elems); } }