Source Code : Shuffler Enum

Java Is Open Source Programming Language You Can Download From Java and Java Libraries From http://www.oracle.com. Click Here to download
We provide this code related to title for you to solve your developing problem easily. Libraries which is import in this program you can download from http://www.oracle.com. Click Here or search from google with Libraries Name you get jar file related it

Shuffler Enum

        
//package gameEngine.logic.utils;

import java.lang.reflect.Array;
import java.util.Random;

public class Shuffler<T extends Enum<?>> 
{
  private T m_Array[] = null;
  private int m_Index = 0;
  
  @SuppressWarnings("unchecked")
  public Shuffler(int size, int quantitiesArr[], Class<T> type) 
  {
    m_Array = (T[])Array.newInstance(type, size);
    int startIndex = 0;
    for (T currValue : type.getEnumConstants()) 
    {
      int currIndex = currValue.ordinal();
      if (currIndex >= quantitiesArr.length)
      {
        break;
      }
      if (quantitiesArr[currIndex] == 0)
      {
        continue;
      }
      initElements(startIndex, quantitiesArr[currIndex], currValue);
      startIndex += quantitiesArr[currIndex];
    }
    Randomizer.generatePermutationOnArray(m_Array);
  }
  
  private void initElements(
          int startingIndex, 
          int numberOfElements, 
          T elemValue
          ) 
  {
    for (int i = 0; i < numberOfElements; i++)
    {
      m_Array[i + startingIndex] = elemValue;
    }
  }

  public void shuffle()
  {
    if (m_Array != null)
    {
      Randomizer.generatePermutationOnArray(m_Array);
    }
    reset();
  }
  
  public void reset()
  {
    m_Index = 0;
  }
  
  public T getNext()
  {
    try
    {
      return m_Array[m_Index++];
    }
    catch(ArrayIndexOutOfBoundsException e)
    {
      return null;
    }
  }
  
  public T peek()
  {
    if (m_Index >= m_Array.length)
    {
      return null;
    }
    else
    {
      return m_Array[m_Index];
    }
  }

}
class Randomizer
{
  static
  {
    m_Random = new Random();
  }
  
  public static void generatePermutationOnArray(Object[] array)
  {
    Object tmp = null;
    int currIndex = 0;
    for (int i = array.length; i > 0; i--)
    {
      currIndex = m_Random.nextInt(i);
      tmp = array[currIndex];
      array[currIndex] = array[i - 1];
      array[i - 1] = tmp;
    }
  }
  
  public static int getRandomNumber(int lowerBound, int higherBound)
  {
    int delta = higherBound - lowerBound + 1;
    return (m_Random.nextInt(delta) + lowerBound);
  }
  
  private static Random m_Random;
  
  public static void main(String args[])
  {
    Integer arr[] = new Integer[20];
    for (int i = 0; i < 20; i++)
    {
      arr[i] = new Integer(i);
    }
    for (int i = 0; i < 5; i++)
    {
      System.out.println("");
      generatePermutationOnArray(arr);
      
    }
  }

  public static double getRandomDouble()
  {
    double rand = m_Random.nextDouble();
    boolean flag = m_Random.nextBoolean();
    if (flag == true)
    {
      rand *= -1.0;
    }
    return rand;
  }
}

   
    
    
    
    
    
    
    
  

Thank with us