How do I get a list of five random numbers to be printed without duplicates in Java?

假装没事ソ 提交于 2019-12-25 11:56:07

问题


I'm trying to get five random numbers printed that never repeat, based on a certain range provided by the user. Posted below is the code I have so far. Firstly, I don't know how to list the numbers found in the ArrayList, or even if I should use ArrayList over just an Array. Any thoughts?

package h1p2;
import java.util.ArrayList;

public class test{
    public void method (int min, int max){
        //Declare and initialize arrays and index variables
        ArrayList<Integer> rangeOne = new ArrayList<Integer>();
        ArrayList<Integer> rangeMinMax = new ArrayList<Integer>();

        int z = min;
        int i = 0;
        int q = 0;
        //int rangeLength = rangeMinMax.length;

        //need minimum/max differential of 50 or > to execute method
        if (max - min < 50){
            System.out.println("Please enter numbers with a differential of 50 or greater.");
        }

        //run if differential checks out
        else{
            while (z <= max && z >= min ){
                rangeMinMax.set(z, 1);
                i++;    
            }
        }

        while (q < 5){
            int randomNumber = (int)(rangeMinMax.size() * Math.random());
            if (randomNumber == rangeOne.indexOf(0)|| randomNumber == rangeOne.indexOf(1) || 
                    randomNumber == rangeOne.indexOf(2) || randomNumber == rangeOne.indexOf(3) ||
                    randomNumber == rangeOne.indexOf(4) || randomNumber == rangeOne.indexOf(5)){
                break;
            }

            else{
                rangeOne.set(q, randomNumber);
            }

            q++;
        }
        System.out.println("The numbers are " + )
    }
}

回答1:


As Takendarkk says a set is useful.

// First check that min, max are valid and far enough apart
Set<Integer> set = new HashSet<>();
Random r = new Random();
while (set.size() < 5) {
    set.add(min + r.nextInt(max - min + 1));
}
System.out.println("Your numbers are: " + set);


来源:https://stackoverflow.com/questions/21618495/how-do-i-get-a-list-of-five-random-numbers-to-be-printed-without-duplicates-in-j

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!