1

我的任务是创建一个 Android 应用程序,用户在其中选择四个数字(1-6),然后我将它与四个随机生成的数字进行比较,然后告诉他们有多少数字是正确的。

我的问题是,每当我生成任何数字时,显示的前三个总是相同的,除了最后一个数字。

    Random a1 = new Random();
    random1 = new ArrayList<Integer>();

    for (int index = 0; index < 6; index++)
    {
        random1.add(a1.nextInt(5)+ 1);
    }

    Random a2 = new Random();
    random2 = new ArrayList<Integer>();

    for (int index = 0; index < 6; index++)
    {
        random2.add(a2.nextInt(5)+ 1);
    }

这是我用于随机数生成的代码,每个数字都使用完全相同的代码,这使得它更加混乱,如果它们都相同,我可以理解因为它是相同的代码它生成相同的数字或其他东西这些行,但最后一行总是不同的,任何帮助都将不胜感激。

4

2 回答 2

0

检查以下代码是否适合您。代码取自http://www.javapractices.com/topic/TopicAction.do?Id=62。根据您的要求进行修改。

public final class RandomRange {

public static final void main(String... aArgs) {

    int START = 1;
    int END = 6;
    Random random = new Random();
    List<Integer> first = new ArrayList<Integer>();
    List<Integer> second = new ArrayList<Integer>();
    for (int idx = 1; idx <= END; ++idx) {
        first.add(showRandomInteger(START, END, random));
        second.add(showRandomInteger(START, END, random));
    }
    System.out.println(first);
    System.out.println(second);
    first.retainAll(second);//Find common
    System.out.println(first);

}

private static int showRandomInteger(int aStart, int aEnd, Random aRandom) {
    if (aStart > aEnd) {
        throw new IllegalArgumentException("Start cannot exceed End.");
    }
    // get the range, casting to long to avoid overflow problems
    long range = (long) aEnd - (long) aStart + 1;
    // compute a fraction of the range, 0 <= frac < range
    long fraction = (long) (range * aRandom.nextDouble());
    int randomNumber = (int) (fraction + aStart);
    return randomNumber;
}

}
于 2012-09-20T10:30:03.073 回答
0

尽量不要创建两个 Random 实例,而是重用单个实例。可能是两个种子相近的随机数产生相近的输出。

于 2012-09-20T10:27:03.573 回答