Slumpa fram tal

Ett program för att slumpa fram tal mellan 0 och x där varje tal ligger mellan 0 och x och bara förekommer 1 gång

import java.util.Stack;
import java.util.Vector;

public class RandomIntervall {

Stack<Integer> stack;

public int[] getRandomNumbersIntervallAray(int to){
stack = new Stack<Integer>();
CreatePsydoRandomNumbers(to);

int[] answer = new int[to];
int i=0;
while(!stack.empty()){
answer[i]=stack.pop();
i++;
}
return answer;
}

public Vector<Integer> getRandomNumbersIntervallVector(int to){
stack = new Stack<Integer>();
CreatePsydoRandomNumbers(to);

Vector<Integer> vect = new Vector<Integer>();
while(!stack.empty()){
vect.add(stack.pop());
}
return vect;
}

private int QuadraticProbing(int k, int to, int i){
return (Math.abs((k % to + (i/2)*(int)Math.pow(-1, i))) % to);
}

private void CreatePsydoRandomNumbers(int to){

java.util.Random jh = new java.util.Random();

while(stack.size()<to){
int randomHashNumber = Math.abs(jh.nextInt());

if(!stack.contains(randomHashNumber % to)){
stack.push(randomHashNumber % to);
}
else{
int i=1;
int temp;
while(stack.contains(temp=QuadraticProbing(randomHashNumber, to, i))){
i++;
}
stack.push(temp);
}
}
}

public static void main(String[] arg){
RandomIntervall r = new RandomIntervall();
int[] array = r.getRandomNumbersIntervallAray(12);
for(int i =0; i<array.length; i++){
System.out.print(array[i]+” “);
}
System.out.flush();
}

}

Leave a Reply