我试图创建一个没有重复的随机数组。
任务是从用户那里获取一个整数数组和最大值,用0到最大值之间的随机数填充数组,并显示没有重复的随机数组,不使用任何其他类,除了随机和扫描仪。
这是一个示例输出:
请输入数组的大小:10
请输入最大值:50
[39,2,17,49,12,19,40,31,42,15]
我需要帮助删除重复的内容。我不确定我所做的是否正确,我是一个初学者,但这是我目前所做的。非常感谢帮助。谢谢。
public class Fill {
private static int size;
private static int maxVal;
public static void main(String[] args) {
Scanner kb = new Scanner(System.in);
// Ask user to enter the size of the array
System.out.print("Please enter the size of the array: ");
size = kb.nextInt();
// Ask user to enter the maximum value allowed
System.out.print("Please enter the maximum value: ");
maxVal = kb.nextInt();
// Call fill() method
int arr[] = fill(size, maxVal);
// Print filled array
System.out.print("[");
for (int i = 0; i < arr.length - 1; i++)
System.out.print(arr[i] + ",");
System.out.print(arr[arr.length - 1] + "]");
}
public static int[] fill(int size, int maxVal) {
int arr[] = new int[size];
Random random = new Random();
// Fills the array with random numbers between 0 and maximum value
if (size <= 0 || maxVal < size - 1) {
System.out.print("Incorrect Parameters. Please Retry");
main(null);
} else {
for (int j = 0; j < size; j++) {
arr[j] = random.nextInt(maxVal);
// Check array for duplicates
for (int k = j + 1; k < size; k++) {
if(arr[j] == arr[k]) {
//create new random array
fill(size, maxVal);
}
}
}
}
return arr;
}
}
我已经编辑并修复了您的代码中的一些问题,如下所示:
public class Fill {
private static int size;
private static int maxVal;
public static void main(String[] args) {
Scanner kb = new Scanner(System.in);
// Ask user to enter the size of the array
System.out.print("Please enter the size of the array: ");
size = kb.nextInt();
// Ask user to enter the maximum value allowed
System.out.print("Please enter the maximum value: ");
maxVal = kb.nextInt();
// Call fill() method
int arr[] = fill(size, maxVal);
// Print filled array
System.out.print("[");
for (int i = 0; i < arr.length - 1; i++)
System.out.print(arr[i] + ",");
System.out.print(arr[arr.length - 1] + "]");
}
public static int[] fill(int size, int maxVal) {
int arr[] = new int[size];
Random random = new Random();
// Fills the array with random numbers between 0 and maximum value
if (size <= 0 || maxVal < size ) {
System.out.print("Incorrect Parameters. Please Retry");
main(null);
} else {
for (int j = 0; j < size; j++) {
int newNumber = random.nextInt(maxVal + 1);
// Check array for duplicates
while(alreadyExist(newNumber, arr)){
newNumber = random.nextInt(maxVal + 1);
}
arr[j] = newNumber;
}
}
return arr;
}
static boolean alreadyExist(int a, int[] arr){
for(int i = 0 ; i < arr.length ; i++){
if(arr[i] == a) return true;
}
return false;
}
}
现在它不返回任何重复值。
在本例中,最大值仅为5,因此我可以逐个检查副本,但如何以更简单的方式执行此操作?例如,如果最大值为20,该怎么办?谢谢
问题内容: 在这种情况下,MAX仅为5,因此我可以一张一张地检查重复项,但是如何以更简单的方式进行检查呢?例如,如果MAX的值为20,该怎么办?谢谢。 问题答案: 最简单的方法是创建一个可能数字的列表(1..20或任何数字),然后用对其进行混洗。然后,只需考虑你想要的许多元素。如果你的范围最终等于你需要的元素数量(例如,用于洗牌的卡片),则这非常好。 如果你想要(说)1..10,000范围内的10
本文向大家介绍C++生成不重复的随机整数,包括了C++生成不重复的随机整数的使用技巧和注意事项,需要的朋友参考一下 C++生成不重复的随机数,供大家参考,具体内容如下 给定正整数的范围[n,m],生成k个不重复的随机数字。 IDE是vs013。 运行结果: 这个程序可以用于班级内部按照学号进行随机抽签。 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。
新手,我正在制作一个程序,生成一个带有适当后缀的随机序数(即1、2、3…)我无法获得randomInt();工作。我不断收到以下错误: 我在Google和Stack Overflow上搜索了一个无济于事的解决方案。我甚至从互联网上复制和编译了其他使用随机Int()的程序;它们都产生了同样的错误。你能告诉我我做错了什么吗?这是我的程序代码: 欢迎对我的节目提出批评。谢谢
问题内容: 我尝试使用,但一些数字相同。有没有一种方法/模块来创建唯一的随机数列表? 问题答案: 这将返回从0到99范围内选择的10个数字的列表,没有重复。 参考你的特定代码示例,你可能希望一次从文件中读取所有行,然后从内存中的已保存列表中选择随机行。例如: 这样,你只需要在循环之前实际从文件中读取一次即可。与返回文件开头并为每次循环迭代再次调用相比,执行此操作效率更高。
问题内容: 作为我项目的一部分,我需要通过提供一组数字来创建不重复的2或3位数字随机数。我不想为此实现一个列表或数组,因为我应该为每个函数调用获取1个随机数。 我尝试使用Java的SecureRandom类来做到这一点。我也从某些站点获得了帮助,但是我陷入了困境,我们可以改组VALUES并完成它吗?但是我不知道该怎么办。谁能帮我? 问题答案: Fisher- yates随机播放算法 是必经之路。其