in blue j Write a method that will produce random permutations of the numbers 1
ID: 3769766 • Letter: I
Question
in blue j
Write a method that will produce random permutations of the numbers 1 to 10. To generate a random permutation, you need to fill an array with the numbers 1 to 10 so that no two entries of the array have the same contents. You could do it by brute force, by calling Math.random() until it produces a value that is not yet in the array. That may take some time, and wouldn’t be efficient. Instead you should implement a smart process; Make a second array and fill it with the numbers 1 to 10, then pick one of those at random, remove it from the second array and append it to the permutation array. Repeat this 10 times.
Create a main method that will test this method along with a printArray(int [] arr) method to print it out. Print out 5 or 6 arrays in your main method created by your randomizing method to ensure it is working appropriately.
Explanation / Answer
Sample code:
PermutationGenerator.java
import java.util.Random;
import java.util.ArrayList;
public class PermutationGenerator
{
private ArrayList<Integer> numbers;
// holds numbers 1-10
private Random generator;
// for generating random numbers
//PermutationGenerator method adds the random numbers to array list.
/* Allocates memory for ArrayList and Random and
adds numbers to the ArrayList */
public PermutationGenerator()
{
numbers = new ArrayList<Integer>();
for( int i = 1; i <=10 ; i++ )
numbers.add(i);
generator = new Random();
}
//nextPermutation method holds the next permutation.
/*Gets the next permutation from the ArrayList.
return an array that holds the next
permutation*/
public int[] nextPermutation()
{
//generates random numbers determined by size
int position = generator.nextInt(numbers.size());
int[] numberHolder = new int[1];
//array of one element holds the value from numbers
numberHolder[0]=numbers.get(position);
// removes that position
numbers.remove(position);
return numberHolder;
}
}
PermutationTest.java
import java.util.ArrayList;
public class PermutationTest
{
//Main method to starting point of the program.
public static void main(String[] args)
{
// allocates memory for a PermutationGenerator
PermutationGenerator pg1 = new PermutationGenerator();
PermutationGenerator pg2 = new PermutationGenerator();
PermutationGenerator pg3 = new PermutationGenerator();
PermutationGenerator pg4 = new PermutationGenerator();
PermutationGenerator pg5 = new PermutationGenerator();
//Create a ArrayList object to hold random numbers.
// ArrayList to hold all random numbers
ArrayList<Integer> randoms = new ArrayList<Integer>();
int tempHolder[];
// holds values returned from method
for( int i = 0; i < 10; i++ )
{
tempHolder = pg1.nextPermutation();
// after accessing nextPermutation,add it to pg.
randoms.add(tempHolder[0]);
}
PermutationTest.printArray(randoms);
ArrayList<Integer> randoms1 = new ArrayList<Integer>();
int tempHolder1[];
// holds values returned from method
for( int i = 0; i < 10; i++ )
{
tempHolder1 = pg2.nextPermutation();
// after accessing nextPermutation,add it to pg.
randoms1.add(tempHolder1[0]);
}
//Display the random generated numbers.
PermutationTest.printArray(randoms1);
ArrayList<Integer> randoms2 = new ArrayList<Integer>();
int tempHolder2[];
// holds values returned from method
for( int i = 0; i < 10; i++ )
{
tempHolder2 = pg3.nextPermutation();
// after accessing nextPermutation,add it to pg.
randoms2.add(tempHolder2[0]);
}
PermutationTest.printArray(randoms2);
//Display the random generated numbers.
ArrayList<Integer> randoms3 = new ArrayList<Integer>();
int tempHolder3[];
// holds values returned from method
for( int i = 0; i < 10; i++ )
{
tempHolder3 = pg4.nextPermutation();
// after accessing nextPermutation,add it to pg.
randoms3.add(tempHolder3[0]);
}
PermutationTest.printArray(randoms3);
ArrayList<Integer> randoms4 = new ArrayList<Integer>();
int tempHolder4[];
// holds values returned from method
for( int i = 0; i < 10; i++ )
{
tempHolder4 = pg5.nextPermutation();
// after accessing nextPermutation,add it to pg.
randoms4.add(tempHolder4[0]);
}
PermutationTest.printArray(randoms4);
}
static void printArray(ArrayList<Integer> arr) {
// TODO Auto-generated method stub
System.out.println(" Numbers generated:");
for( int i = 0; i < arr.size(); i++ )
System.out.print(arr.get(i) + " ");
}
}
Sample output:
Related Questions
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.