英文:
Random even numbers on array from 1 to 100
问题
我需要在一个数组上写入20个从1到100的随机偶数。由于某种原因,有些数组值上会得到0。对此有解决方案吗?
```java
for (int i = 0; i < 20; i++) {
Random random = new Random();
int randomNumber = random.nextInt(100) + 1;
if (randomNumber % 2 == 0) {
arregloAleatorio[i] = randomNumber;
}
}
打印结果,例如:
0 26 0 4 0 14 0 78 0 16 0 0 86 10 0 0 0 72 34 70
但我不希望数组中出现0。
<details>
<summary>英文:</summary>
I need to write on an array 20 random numbers from 1 to 100, but just even numbers.. For some reason i'm getting 0 on some array value, any solution for this?
for (int i = 0; i < 20; i++) {
Random random = new Random();
int randomNumber = random.nextInt(100) + 1;
if (randomNumber % 2 == 0) {
arregloAleatorio[i] = randomNumber;
}
The print is, for example:
0 26 0 4 0 14 0 78 0 16 0 0 86 10 0 0 0 72 34 70
But I don't want 0 in the array.
</details>
# 答案1
**得分**: 1
我建议先考虑约束条件。我们希望生成的数字是偶数,并且介于2和100之间。这组数字的大小为50。因此,我们可以生成一个介于0和49(包括在内)之间的随机数,然后加1并乘以2,从而得到所需的数字。代码:
```java
int[] arr = new int[20];
for (int i = 0; i < 20; i++) {
Random random = new Random();
int randomNumber = random.nextInt(50) + 1;
arr[i] = randomNumber * 2;
}
英文:
I would suggest to think about the constraints first. We want to the generated numbers to be the even numbers, between 2 and 100. This group of numbers, is of the size of 50. Therefore, we can generate a random number between 0-49 (Inclusive), and then add 1 and multiply by 2, and get the required number. The code:
int[] arr = new int[20];
for (int i = 0; i < 20; i++) {
Random random = new Random();
int randomNumber = random.nextInt(50) + 1
arr[i] = randomNumber * 2;
}
答案2
得分: 0
尝试以下内容:
int[] arregloAleatorio = new int[20];
for (int i = 0; i < 20; i++) {
Random random = new Random();
int randomNumber = random.nextInt(101);
while (randomNumber % 2 != 0 || randomNumber == 0){
randomNumber = random.nextInt(101);
}
arregloAleatorio[i] = randomNumber;
}
如果数字是奇数,则不将其添加到数组中,因此默认为零。
此解决方案生成随机数,直到它不为0或奇数。
英文:
Try the following:
int[] arregloAleatorio = new int[20];
for (int i = 0; i < 20; i++) {
Random random = new Random();
int randomNumber = random.nextInt(101);
while (randomNumber % 2 != 0 || randomNumber == 0){
randomNumber = random.nextInt(101);
}
arregloAleatorio[i] = randomNumber;
}
You are not adding a number to the array if it is odd, therefore by default it was zero.
This solution generates a random number until it is not 0 or odd.
答案3
得分: 0
因为你的迭代在数字为奇数时仍然继续进行,所以会出现这种情况;当你输出数组时,由于该索引处没有数字,它看起来像是 0!快速的解决方法就是,如果数字是奇数,只需减少 i
的值。我只添加了一行代码。我没有尝试过,但应该能够解决问题。
for (int i = 0; i < 20; i++) {
Random random = new Random();
int randomNumber = random.nextInt(100) + 1;
if (randomNumber % 2 == 0) {
arregloAleatorio[i] = randomNumber;
} else i--;
}
英文:
This is happening because your iteration continues even if the number is odd, and when you are outputting the array, it appears to be a 0 because there is no number at that index! The quick fix would be to just decrement i
if the number is odd. I am adding only 1 line of code. I didn't try it but it should work.
for (int i = 0; i < 20; i++) {
Random random = new Random();
int randomNumber = random.nextInt(100) + 1;
if (randomNumber % 2 == 0) {
arregloAleatorio[i] = randomNumber;
}else i--;
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论