数组中随机添加不重复元素

举例:现在我们要创建一个配方,有很多香料可供我们选择。为了按随机顺序创建很多配方,需要保证以前出现过的一次随机选择(香料)不会再次出现。
为了达到目的,可以使用无限wihle循环,不断的做出随机选择,直到发现未在picks数组中出现过的一个元素为止(当然也可以进行字符串比较,检查随机选择是否在results数组中出现过,但效率比较低)

完整代码:

public class IceCream {
    static String[] flav = { "Chocolate", "Strawberry", "Vanilla Fudge Swirl",
            "Mint Chip", "Mocha Almond Fudge", "Rum Raisin", "Praline Cream",
            "Mud Pie" };

    //主要代码
    static String[] flavorSet(int n) {
        n = Math.abs(n) % (flav.length + 1);
        String[] results = new String[n];
        int[] picks = new int[n];
        for (int i = 0; i < picks.length; i++) {
            retry: while (true) {
                int t = (int) (Math.random() * flav.length);
                System.out.println(t);
                for (int j = 0; j < i; j++) {
                    if (picks[j] == t)
                        continue retry;
                }
                picks[i] = t;
                results[i] = flav[t];
                break;
            }
        }
        return results;
    }

    public static void main(String[] args) {
        for (int i = 0; i < 20; i++) {
            System.out.println("flavorSet(" + i + ")=");
            String[] f1 = flavorSet(flav.length);
            for (int j = 0; j < f1.length; j++) {
                System.out.println("\t" + f1[j]);
            }
        }
    }
}

你可能感兴趣的:(Java学习,Java,数组,添加元素,随机)