You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
|
|
/*
|
|
|
|
|
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.
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
//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();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
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
|