偶数和奇数的随机数发生器
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).
这是我得到的示例输出:
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
一行只有奇数,另一行只有偶数。
有人知道我需要在这里添加什么吗?
您可以使用公式 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()
,它更适合生成随机整数。
对您的程序稍加修改就会产生所需的结果。
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 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。
这是一个使用 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]
我需要创建一个应用程序,生成 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
一行只有奇数,另一行只有偶数。
有人知道我需要在这里添加什么吗?
您可以使用公式 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()
,它更适合生成随机整数。
对您的程序稍加修改就会产生所需的结果。
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 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。
这是一个使用 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]