我创建了以下方法,以便创建唯一的随机数。(此唯一值属于树的节点):
static Random rand = new Random();
public static ArrayList<Node> go(int n) {
ArrayList<Node> list = new ArrayList<Node>();
ArrayList<Integer> numList = new ArrayList<Integer>();
// TODO Auto-generated method stub
for(int i = 1; i<=5; i++)
{
int number = rand.nextInt(10)+1;
if(list.size()>0 && !check(list,number))
{
i--;
continue;
}
numList.add(number);
Node node = new Node();
node.data = number;
list.add(node);
}
int w = 0;
for (Node d : list) {
System.out.println(w+": "+d.data);
w++;
}
return list;
}
private static boolean check(ArrayList<Node> list, int num) {
// TODO Auto-generated method stub
boolean b = false;
/*if(list.size()==0)
return true;
*/
for (Node node : list) {
if(node.data == num)
b = false;
else
b = true;
}
return b;
}
但这并不会创建唯一的数字,并且我的列表中仍然有重复的数字。喜欢 :
0: 10
1: 1
2: 10
3: 5
4: 6
问题是,如果它发现重复的数字,您不会在检查函数中停止for循环。循环继续进行,b可以变回true。
例如,您应该做的是:
private static boolean check(ArrayList<Node> list, int num) {
for (Node node : list) {
if(node.data == num)
return false;
}
return true;
}
问题内容: 我正在尝试获取一个随机数列表,并将其放入队列中,而不会重复任何随机数。 通过上面的代码,我得到了一些随机数的重复 有人知道怎么做吗? 问题答案: 这个怎么样: 在某个范围内“添加唯一的随机数”等效于将范围内的所有数字相加,然后对结果进行混排。
问题内容: 我正在尝试获取0到100之间的随机数。但是我希望它们是唯一的,而不是在序列中重复。例如,如果我有5个数字,它们应该是82,12,53,64,32而不是82,12,53,12,32(我使用了这个数字),但是它在序列中生成相同的数字。 问题答案: Add each number in the range sequentially in a list structure. Shuffle i
问题内容: 这就是我在1到6之间生成唯一编号并从drawable文件夹中获取适当图像的方式。 我想要的是,我必须调用此方法7次,并且每次此方法应返回唯一的随机数。因此,所有已选择的数字都不会再次出现。 问题答案: 解决此类问题的常用方法是创建一个包含每个可能值的列表,并对其进行混洗(使用Collections.shuffle)。然后,每当您需要一个值时,便从列表中消费一项。这将确保您不会多次使用相
如何在1到9之间生成9个随机数,而不重复,一个接一个。它类似于:假设生成的第一个随机数是4,那么下一个随机数必须在[1,9]{4}中。我的第一种方法是将每个随机生成的数字添加到一个集合中,从而避免重复。但在更糟糕的情况下,比如我们已经生成了6个数字,我们必须再生成3个数字,这个过程会有点慢。当范围从[1,9]更改为[1,1000]时,这种方法听起来不正确。有人能提出一个替代方法吗。
在本例中,最大值仅为5,因此我可以逐个检查副本,但如何以更简单的方式执行此操作?例如,如果最大值为20,该怎么办?谢谢
问题内容: 我有一个取自文件的值(很多行,这只是一部分): 每行的前两个值是包含数据并存储在单个元素中的字符串。 我想要做的是比较字符串数据元素并删除例如第二行和该行中引用的所有元素。 现在,我使用了一个循环,该循环每13个元素比较一次字符串(以便仅比较数据字符串)。 我的问题:我可以实施其他更好的解决方案吗? 这是我的代码: 问题答案: 创建唯一值的数组列表 您可以使用方法。 不包含重复元素的集