偶数和奇数的随机数发生器

时间:2015-04-12 18:09:02

标签: java arrays random

我需要创建一个应用程序,在0到99之间生成25个随机整数,然后在两个单独的行上输出这些整数,一个用于奇数,一个用于偶数。我将需要使用一个数组用于偶数,一个用于奇数。这就是我到目前为止所做的:

public static void main(String[] args) {

    //Odd Numbers
    int[] oddNums = new int[25];

    for (int index = 0; index < oddNums.length; index++) {
        oddNums[index] = (int) (Math.random()*99);
    }

    System.out.print("ODD: ");

    for (int index = 0; index < oddNums.length; index++) {
        System.out.print(oddNums[index] + " ");
    }

    //Even Numbers
    int[] evenNums = new int[25];

    for (int index = 0; index < evenNums.length; index++) {
        evenNums[index] = (int) (Math.random()*99);
    }

    System.out.print("\nEVEN: ");

    for (int index = 0; index < evenNums.length; index++) {
        System.out.print(evenNums[index] + " ");
    }

}

我已经设置了打印25个随机整数的程序,但是我不知道如何让程序打印出一行上的偶数和另一行上的奇数(我是java的新手)

以下是我得到的示例输出:

  

ODD:28 36 54 98 35 1 59 43 96 69 41 66 37 15 30 17 29 67 56 83 71 4   24 70 38
  EVEN:34 45 36 26 73 84 60 39 21 49 28 98 69 14 32 24 72 29 26 88 77 2   23 58 47

这是错误的,因为两条线上都有偶数和奇数。

这就是输出的样子:

  

ODD:25 97 23 45 63 91 13 47 93 51 29
  EVEN:22 94 46 74 18 48 32 84 28 92 56

一行只有奇数,而另一行只有偶数。

有谁知道我需要在这里添加什么?

6 个答案:

答案 0 :(得分:2)

对您的程序进行一些修改将产生所需的结果。

public static void main(String[] args) {

    //Odd Numbers
    int[] randomNumbers = new int[25];
    int[] evenNumbers = new int[25];
    int[] oddNumbers = new int[25];
    int k = 0, l = 0;
    for (int index = 0; index < randomNumbers.length; index++) {
        randomNumbers[index] = (int) (Math.random() * 99);
    }
    for (int i = 0; i < 25; i++) {
        if (randomNumbers[i] % 2 == 0) {
            evenNumbers[k] = randomNumbers[i];
            k++;
        } else {
            oddNumbers[l] = randomNumbers[i];
            l++;
        }
    }
}

答案 1 :(得分:1)

您只需生成25号码即可。生成这些整数后,您可以在它们所属的数组中找到它们。

int num;
int oddIndex = -1;
int evenIndex = -1;
for (index = 0; index < 25 ; index++){
      num = (int) (Math.random()*99);
      if (num % 2 == 1){
         oddIndex++;
         oddNum[oddIndex] = num;             
      }
      else{
         evenIndex++;
         evenNum[evenIndex] = num;
      }
 }

在这种情况下,您不确定每个阵列的大小。所以,我建议你使用ArrayList而不是array。如果使用ArrayList,则不需要处理oddIndex和evenIndex。

答案 2 :(得分:0)

您可以在[0,100]中随机均匀地生成偶数,其公式为n = 2 * x,其中x在[0,49]中均匀随机。

你可以类似地生成一个均匀随机的奇数,其中n = 2 * x + 1,其中x在[0,49]中是均匀随机的。

答案 3 :(得分:0)

首先,你写的随机函数将产生0到99之间的随机数。它不会考虑数字是奇数还是偶数。

如果对奇数的数量和偶数的数量没有限制,只需使用随机发生器一次,具体取决于它是奇数还是将它放在正确的数组中。

为此,请使用MOD运算符,即在除以2后检查余数,以查看奇数或偶数

答案 4 :(得分:0)

在您的代码中的某个时刻,您需要具有类似的内容,

伪代码:

if (nextNumber is odd) then
   put nextNumber at end of ODD array
else
   put nextNumber at end of EVEN array
endif

您还应该查看util.Random.nextInt(),这对于生成随机整数更为可取。

答案 5 :(得分:0)

这是一个使用Java 8流的解决方案:

public class NumberGenerator {
    public static void main(String[] args) {
        Random random = new Random();
        int[] ints = random.ints(25, 0, 99).sorted().toArray();
        int[] even = IntStream.of(ints).filter(x -> x % 2 == 0).toArray();
        int[] odd = IntStream.of(ints).filter(x -> x % 2 == 1).toArray();
        System.out.println(Arrays.toString(even));
        System.out.println(Arrays.toString(odd));
    }
}

首先创建所有随机整数的数组。创建了25个随机整数,它们都应该在0到99之间。

将平均值和赔率过滤成两个独立的阵列。

[0, 4, 6, 16, 18, 22, 40, 42, 58, 64, 82, 84, 98]
[7, 27, 29, 31, 35, 55, 73, 75, 75, 79, 83, 91]