gpt4 book ai didi

java - 如何在数组中生成唯一的随机数

转载 作者:行者123 更新时间:2023-12-01 12:55:57 25 4
gpt4 key购买 nike

我在完成这项作业时遇到了麻烦,该作业要求我在不使用 ArrayList 的情况下创建 50 个随机唯一数字。我需要使用一个 boolean 数组来检查随机数是否已经生成。 50 个数字中生成的每个数字都将在 boolean 数组中设置为 true。前任。生成数字 23 将使 check[23]=true。我遇到的问题是 while 循环中的一个错误,即使没有剩下其他唯一的数字,它也会继续生成新的随机数。如何解决这个问题,同时仍然使用 boolean 数组来检查唯一性。

int rnd;
Random rand=new Random();Random rand=new Random();
int[] nums = new int[50];
boolean[] check = new boolean[51];

rnd = rand.nextInt(50) +1;
for (int k = 0; k<50; k++)
{
//Loop for when there number is already chosen
while (check[rnd]==true)
{
rnd = rand.nextInt(50) +1;
}
//Sets the random unique number to a slot in the array
if(check[rnd]==false)
{
nums[k]=rnd;
check[rnd]=true;
}
rnd = rand.nextInt(50) +1;
}
System.out.println(nums);

最佳答案

试试这个:

import java.util.Random;

public class random {
public static void main(String[] args) {
// TODO Auto-generated method stub
Random myRandom = new Random();
int[] numbers = new int[50];
boolean[] check = new boolean[50];
int amountFilled = 0;
int trial;
while (amountFilled < 50) {
trial = myRandom.nextInt(50);
if (!check[trial]) {
check[trial] = true;
numbers[amountFilled] = trial;
amountFilled++;
}
}
for (int i = 0; i < 50; i++) {
System.out.println(numbers[i]);
}
}
}

您真正的问题是 System.out.println(nums); 语句。它不会做你该做的事。以及双Random rand=new Random();。其余的代码就OK了。我以更清晰/更简单的方式重写了它,但是如果您修复输出语句,您已经可以使用它了。

关于java - 如何在数组中生成唯一的随机数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23897814/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com