This is java implementation of the Fisher–Yates shuffle (named after Ronald Fisher and Frank Yates)algorithm, also known as the Knuth shuffle (after Donald Knuth), for generating a random permutation of a finite set—in plain terms, for randomly shuffling the set.
Here is the source code of the Java Program to Implement Fisher-Yates Algorithm for Array Shuffling. The Java program is successfully compiled and run on a Windows system. The program output is also shown below.
//This is a sample program to shuffle the elements of an array using Fisher Yates Array Shuffling algorithm
import java.util.Random;
import java.util.Scanner;
public class Fisher_Yates_Array_Shuffling
{
static int[] fisherYatesShuffling(int []arr, int n)
{
int []a = new int[n];
int []ind = new int[n];
for(int i=0; i<n; i++)
ind[i] = 0;
int index;
Random rand = new Random();
for(int i=0; i<n; i++)
{
do
{
index = rand.nextInt(n);
} while(ind[index] != 0);
ind[index] = 1;
a[i] = arr[index];
}
return a;
}
public static void main(String agrs[])
{
Scanner sc = new Scanner(System.in);
System.out.println("Enter the array size: ");
int n = sc.nextInt();
System.out.println("Enter the array elements: ");
int []a = new int[n];
int []res = new int[n];
for(int i=0; i<n; i++)
{
a[i] = sc.nextInt();
}
res = fisherYatesShuffling(a, n);
for(int i=0; i<n; i++)
{
System.out.print(res[i]+" ");
}
sc.close();
}
}
Output:
$ javac Fisher_Yates_Array_Shuffling.java $ java Fisher_Yates_Array_Shuffling Enter the array size: 12 Enter the array elements: 1 2 3 4 5 6 7 8 9 10 11 12 The shuffled elements are: 7 10 8 4 9 6 12 3 2 1 5 11
Related posts:
Java Program to Find kth Largest Element in a Sequence
Giới thiệu Design Patterns
Guide to java.util.concurrent.Future
Java Program to Implement Tarjan Algorithm
Java Program to add two large numbers using Linked List
Introduction to Spring Data MongoDB
Java Program to Implement HashSet API
Java Program to Implement Sparse Array
Runnable vs. Callable in Java
Java InputStream to Byte Array and ByteBuffer
Java Program to Check Cycle in a Graph using Topological Sort
Send email with JavaMail
Java Program to Convert a Decimal Number to Binary Number using Stacks
Creating a Custom Starter with Spring Boot
Java Program to Implement Hash Tables with Double Hashing
So sánh Array và ArrayList trong Java
Java – InputStream to Reader
Java Program to Implement RenderingHints API
Java Program to Implement Unrolled Linked List
Comparing getPath(), getAbsolutePath(), and getCanonicalPath() in Java
Java Program to Implement VList
HashMap trong Java hoạt động như thế nào?
Hướng dẫn sử dụng Java String, StringBuffer và StringBuilder
Java Byte Array to InputStream
Java Program to Implement Ford–Fulkerson Algorithm
Java Program to Implement Dijkstra’s Algorithm using Queue
Java Timer
So sánh HashMap và Hashtable trong Java
Spring Boot - Flyway Database
Convert String to Byte Array and Reverse in Java
Jackson JSON Views
Examine the internal DNS cache