簡體   English   中英

偶數和奇數的隨機數生成器

[英]Random Number Generator of Even and Odd Numbers

我需要創建一個應用程序,該應用程序生成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的新手)。

這是我得到的示例輸出:

奇數: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 18 32 32 84 28 92 56

一行上只有奇數,而另一行上只有偶數。

有人知道我需要在這里添加什么嗎?

對您的程序進行一些修改將產生所需的結果。

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

您只需生成25個數字即可。 生成這些int之后,您可以在它們所屬的數組中找到它們。

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,則無需處理奇數索引和偶數索引。

您可以使用公式n = 2 * x在[0,100]中均勻地隨機產生偶數,其中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() ,它對於生成隨機整數是更可取的。

這是使用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]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM