【问题标题】:Random Number Generator of Even and Odd Numbers偶数和奇数的随机数生成器
【发布时间】:2015-06-18 00:32:00
【问题描述】:

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

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 新手) .

这是我得到的示例输出:

奇数: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
偶数: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

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

这是输出的样子:

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

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

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

【问题讨论】:

    标签: java arrays random


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

      如果奇数个数和偶数个数没有限制,只需使用一次随机发生器,根据奇数或偶数将其放入正确的数组中。

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

      【讨论】:

        【解决方案3】:

        在你的代码中,你需要有类似的东西,

        伪代码:

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

        您还应该看看util.Random.nextInt(),它更适合生成随机整数。

        【讨论】:

        • 我需要在哪里添加它?另外,我只能使用 Math.random()
        • 如果你自己做功课,你会学到更多。我只会给出提示,否则我会为编码工作收取每小时 250 英镑的费用。如果您必须使用Math.random(),请使用它,但了解util.Random 将会很有用。您需要学习这些库。这就是 Java 技能所在。
        • 好的,无论如何感谢您的帮助。我会记得在不久的将来通过util.Random 了解更多信息。
        【解决方案4】:

        对您的程序稍作修改就会产生预期的结果。

        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++;
                }
            }
        }
        

        【讨论】:

        • 对不起,我不完全理解这一点。为什么要创建一个新变量 int k=0 和 int l=0 ?
        • 它们用于将元素正确插入偶数和奇数数组。例如:-evenNumber[0],evenNumber[1]。奇数也是如此。
        【解决方案5】:

        您可以只生成 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 而不是数组。如果使用 ArrayList,则不需要处理oddIndex 和 evenIndex。

        【讨论】:

          【解决方案6】:

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2020-02-28
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2017-01-12
            相关资源
            最近更新 更多