-
Shuffling a list
Collections.shuffle() is used to shuffle lists in java.
Class hierarchy:
java ↳ util ↳ Collections
Syntax:
Collections.shuffle(list);
Examples:
Java
// Java program to demonstrate working of shuffle() import java.util.*;
public class GFG {
public static void main(String[] args)
{
ArrayList<String> mylist = new ArrayList<String>();
mylist.add( "ide" );
mylist.add( "quiz" );
mylist.add( "geeksforgeeks" );
mylist.add( "quiz" );
mylist.add( "practice" );
mylist.add( "qa" );
System.out.println( "Original List : \n" + mylist);
Collections.shuffle(mylist);
System.out.println( "\nShuffled List : \n" + mylist);
}
} |
Output:
Original List : [ide, quiz, geeksforgeeks, quiz, practice, qa] Shuffled List : [ide, practice, quiz, qa, geeksforgeeks, quiz]
-
Shuffling a list using user provided Random Object
Syntax:
Collections.shuffle(list, Random object);
Examples:
Java
// Java program to demonstrate working of shuffle() // with user provided source of randomness. import java.util.*;
public class GFG {
public static void main(String[] args)
{
ArrayList<String> mylist = new ArrayList<String>();
mylist.add( "ide" );
mylist.add( "quiz" );
mylist.add( "geeksforgeeks" );
mylist.add( "quiz" );
mylist.add( "practice" );
mylist.add( "qa" );
System.out.println( "Original List : \n" + mylist);
// Here we use Random() to shuffle given list.
Collections.shuffle(mylist, new Random());
System.out.println( "\nShuffled List with Random() : \n"
+ mylist);
// Here we use Random(3) to shuffle given list. Here 3
// is seed value for Random.
Collections.shuffle(mylist, new Random( 3 ));
System.out.println( "\nShuffled List with Random(3) : \n"
+ mylist);
// Here we use Random(5) to shuffle given list. Here 5
// is seed value for Random.
Collections.shuffle(mylist, new Random( 5 ));
System.out.println( "\nShuffled List with Random(5) : \n"
+ mylist);
}
} |
Output:
Original List : [ide, quiz, geeksforgeeks, quiz, practice, qa] Shuffled List with Random() : [geeksforgeeks, practice, qa, ide, quiz, quiz] Shuffled List with Random(3) : [quiz, ide, practice, quiz, geeksforgeeks, qa] Shuffled List with Random(5) : [ide, quiz, geeksforgeeks, quiz, practice, qa]
-
How to write our own Shuffle method?
We can use Fisher–Yates shuffle Algorithm that works in O(n) time.
Java
// Java Program to shuffle a given array import java.util.Random;
import java.util.Arrays;
public class ShuffleRand
{ // A Function to generate a random permutation of arr[]
static void randomize( int arr[], int n)
{
// Creating a object for Random class
Random r = new Random();
// Start from the last element and swap one by one. We don't
// need to run for the first element that's why i > 0
for ( int i = n- 1 ; i > 0 ; i--) {
// Pick a random index from 0 to i
int j = r.nextInt(i);
// Swap arr[i] with the element at random index
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
// Prints the random array
System.out.println(Arrays.toString(arr));
}
// Driver Program to test above function
public static void main(String[] args)
{
int [] arr = { 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 };
int n = arr.length;
randomize (arr, n);
}
} |
Output:
[5, 7, 1, 3, 6, 8, 4, 2]