mardi 15 mars 2016

Math.random wont randozime number 9 whenever it has to be assign to last array slot

It is a really weird problem I am not sure myself what is happening but I will try to explain.

My code creates an array of size 10, it randoms numbers from 0 to 9 to fit in each slot. The problem comes when the number 9 is not picked until the last space. Math.random keeps randomizing numbers but it will never pick the number 9. I ran the program for about 1 minute and it never picked it.

Here is my program

public class GenerateRandomNumbers{

// main method
    public static void main(String[] args) {
        int aSize = 10;
        int[] a = new int[aSize];//setting size of array
        for(int i = 0; a.length > i; i++){//looping through the whole array
            a[i] =  (int)(Math.random()*9) + 1;//assigning random number to each slot of array
            System.out.println("assign " + a[i] + " to i" + i);

            //looping through filled array slots.
            for(int k = i-1; -1 < k; k--){
                System.out.println("Check if " +  a[i] + " i"+ i + " = " + a[k]+ " k"+ k  );

                //if not unique give a new number
                if(a[i] == a[k]){
                    System.out.println("CHANGE HERE");
                    a[i] = (int)(Math.random()*9) + 0;
                    System.out.println("assign " + a[i] + " to " + i);
                    k = i;//reset loop so it checks all over again

                }
            }
            System.out.println("ACCEPT");
        }
        for(int i = 0; a.length > i; i++){
            System.out.println(a[i]);
        }
    }
}

Can someone explain me what is causing the bug ?

Thanks in advance !




Aucun commentaire:

Enregistrer un commentaire