Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

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: