Java 奇偶数随机数发生器

Java 奇偶数随机数发生器,java,arrays,random,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++) {

我需要创建一个应用程序,生成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] + " ");
    }

}
publicstaticvoidmain(字符串[]args){
//奇数
int[]oddNums=新int[25];
对于(int index=0;index
我已经将程序设置为打印25个随机整数,但我不知道如何让程序在一行上只打印偶数,在另一行上只打印奇数(我是java新手)

下面是我得到的一个示例输出:

单数:283654983515943964166371301729675683714 247038
偶数:34 45 36 26 73 84 60 39 21 49 28 98 69 14 32 24 72 29 26 88 77 2 235847

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

这是输出的外观:

奇数:2597234563911347935129
偶数:2294474184289256

一行上只有奇数,另一行上只有偶数


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

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


同样,您可以生成n=2*x+1的均匀随机奇数,其中x在[0,49]中是均匀随机的。

首先,您编写的随机函数将生成0到99之间的随机数。不会考虑这些数字是奇数还是偶数。

如果奇数和偶数的数量没有限制,只需使用随机生成器一次,并根据它是奇数还是偶数将其放置在正确的数组中


为此,请使用MOD运算符,即在除以2后检查余数,以查看代码中的奇数或偶数,您需要

伪代码:

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

您还应该看看
util.Random.nextInt()
,这是生成随机整数的首选方法。

对程序稍加修改就会得到所需的结果

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++;
        }
    }
}
publicstaticvoidmain(字符串[]args){
//奇数
int[]随机数=新的int[25];
整数[]偶数=新整数[25];
int[]oddNumbers=新int[25];
int k=0,l=0;
for(int index=0;index
您只需生成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;
      }
 }
int-num;
int-oddIndex=-1;
整数指数=-1;
对于(索引=0;索引<25;索引++){
num=(int)(Math.random()*99);
如果(数量%2==1){
oddIndex++;
oddNum[oddIndex]=num;
}
否则{
指数++;
evenNum[evenIndex]=num;
}
}

在本例中,您不确定每个数组的大小。因此,我建议您使用ArrayList而不是array。如果使用ArrayList,则不需要处理oddIndex和evenIndex

这里有一个使用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]

我到底需要在哪里添加这些?另外,我只允许使用Math.random()如果你自己做作业,你会学到更多。我只想给出一些提示,否则我每小时收取250英镑的编码费。如果你必须使用
Math.random()
那么就使用它,但是学习
util.random
会很有用。你需要学习图书馆。这就是Java的技巧所在。好的,无论如何谢谢你的帮助。在不久的将来,我会记得学习更多关于
util.Random
的内容。对不起,我不完全理解这一点。为什么要创建一个新变量int k=0和int l=0?它们用于将元素正确地插入偶数和奇数数组中。例如:-evenNumber[0],evenNumber[1]。奇数也是如此。