import java.util.Arrays;
import java.util.Random;
import java.util.Scanner;
public class Test {
private static int[] readArray(int arraySize) {
Random r = new Random();
int[] arr = new int[arraySize];
for (int i=0; i<arr.length; i++) {
arr[i] = r.nextInt(arraySize);
}
return arr;
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("Enter array size: ");
int size = sc.nextInt();
int[] arr = readArray(size);
System.out.println(Arrays.toString(arr));
}
}
如何修改上面的代码,这样如果我输入100,我就有一个100个数字的数组,没有重复?
谢谢你。
问题是重复的:创建没有重复的随机数
更改此项:
for (int i=0; i<arr.length; i++) {
arr[i] = r.nextInt(arraySize);
}
为此:
arr = r.ints(0, arraySize).distinct().limit(arraySize).toArray();
或
arr = r.ints(0, 10000).distinct().limit(arraySize).toArray();
10000是上限。
使用while
循环,在集合中添加数字(无重复),直到达到合适的大小
private static Integer[] readArray(int arraySize) {
Set<Integer> unique = new LinkedHashSet<>();
Random r = new Random();
while (unique.size() != arraySize)
unique.add(r.nextInt(arraySize));
return unique.toArray(new Integer[0]);
}
使用Set
跟踪到目前为止数组中存在的元素,并利用它避免重复
private static int[] readArray(int arraySize) {
Set<Integer> set = new HashSet<>();
Random r = new Random();
int[] arr = new int[arraySize];
int random;
for (int i=0; i<arr.length; i++) {
while (set.contains(random = r.nextInt(arraySize)));
arr[i] = random;
set.add(random);
}
return arr;
}
我试图创建一个没有重复的随机数组。 任务是从用户那里获取一个整数数组和最大值,用0到最大值之间的随机数填充数组,并显示没有重复的随机数组,不使用任何其他类,除了随机和扫描仪。 这是一个示例输出: 请输入数组的大小:10 请输入最大值:50 [39,2,17,49,12,19,40,31,42,15] 我需要帮助删除重复的内容。我不确定我所做的是否正确,我是一个初学者,但这是我目前所做的。非常感谢帮
在本例中,最大值仅为5,因此我可以逐个检查副本,但如何以更简单的方式执行此操作?例如,如果最大值为20,该怎么办?谢谢
问题内容: 在这种情况下,MAX仅为5,因此我可以一张一张地检查重复项,但是如何以更简单的方式进行检查呢?例如,如果MAX的值为20,该怎么办?谢谢。 问题答案: 最简单的方法是创建一个可能数字的列表(1..20或任何数字),然后用对其进行混洗。然后,只需考虑你想要的许多元素。如果你的范围最终等于你需要的元素数量(例如,用于洗牌的卡片),则这非常好。 如果你想要(说)1..10,000范围内的10
问题内容: 我尝试使用,但一些数字相同。有没有一种方法/模块来创建唯一的随机数列表? 问题答案: 这将返回从0到99范围内选择的10个数字的列表,没有重复。 参考你的特定代码示例,你可能希望一次从文件中读取所有行,然后从内存中的已保存列表中选择随机行。例如: 这样,你只需要在循环之前实际从文件中读取一次即可。与返回文件开头并为每次循环迭代再次调用相比,执行此操作效率更高。
问题内容: 在Python 的列表中,以下代码给出此输出: 是否存在使用JavaScript中的数组执行此操作的简便方法? 我编写了以下函数来做到这一点,但是有没有更短或更短的东西呢? 问题答案: 您可以这样做: 它在每次迭代中将数组加倍,因此可以创建很少迭代的真正大数组。 注意:您还可以通过使用代替来改善您的功能,因为每次迭代都会创建一个新的数组。像这样(作为一个如何使用数组的示例显示):
问题内容: 我知道这个问题有很多种,但是我还没有找到与我的效率问题相关的答案。 我有下面的代码工作正常。 我有一个10个项目的数组,可以从中随机选择一个项目(按Enter键)。该代码保留了不能随机选择的5个最近选择的数组(以避免随着时间的推移而重复过多)。 如果chooseName()函数最初选择了最近5次使用的名称,它只会中断并再次调用自身,重复直到找到“唯一”名称。 我有两个问题: 说这是“递