如何生成唯一的随机数?

时间:2015-03-20 18:41:40

标签: java

我试图解决一个问题。我必须定义一个包含5个元素的数组,并定义一个随机生成器方法,其中3个定义的integersi1,i2,i3彼此不同。所以当变量将是他们必须与众不同。我希望我很清楚。任何人都可以帮助我,或者欢迎任何建议。

import java.util.*;


public class Array {

    public static void main(String[] arg) {
        int[] v = { 1, 2, 3, 4, 5 };
        DisplayArray(v);
        Array n = new Array();

        n.randomGenerator();
    }

    private static void DisplayArray(int[] arr) {
        for (int x : arr)
            System.out.print(x + " ");
        System.out.println();
    }

    public int[] randomGenerator() {

        int[] a = new int[3];
        int i1;
        int i2;
        int i3;

        for (int i = 0; i < a.length; i++) {
            a[i] = (int) (Math.random() * 5);
        }
        i1 = a[0];
        i2 = a[1];
        i3 = a[2];

        if (i1 != i2 && i2 != i3 && i1 != i3) {
            System.out.println(i1 + "," + i2 + "," + i3);
        } else {
            if (i1 == i2 && i2 == i3 && i1 == i3) {

            }
        }

        return a;
    }
}

1 个答案:

答案 0 :(得分:-2)

使用此选项有两种选择:

一种可能性是生成新的随机数检查它是否是任何现有的随机数,如果是,则重试生成。从理论上讲,这可能需要很长的时间,但实际上它很快。

另一种选择是例如如果你想生成0-9范围内的随机数(包括在内),如果你已经有3和7,生成Math.random()%8而不是Math.random()%10然后如果数字大于或等于3,则将其递增1,如果新数字大于或等于到7,将它递增1。