gpt4 book ai didi

java - 如何自动生成一定范围内的重叠整数

转载 作者:行者123 更新时间:2023-12-01 15:59:00 26 4
gpt4 key购买 nike

If the number range is 0 - 10. I would like to generate the following numbers

e.g.

unique 5 numbers [3, 8, 5, 1, 9]
unique 3 numbers [2, 6, 5]
5 numbers of which 2 numbers occur twice [2, 3, 2, 6, 3]
7 numbers of which 2 numbers occur twice [2, 5, 9, 2, 7, 5, 3] (Here 2, 5 occur twice)
5 numbers of which 1 number occur thrice [2, 3, 8, 3, 3] (Here 3 occurs twice)
7 numbers of which 1 number occur thrice and 1 number occurs twice [1, 5, 9, 1, 1, 5, 3] (Here 1 occurs thrice, 5 occurs twice)

您将如何实现满足上述要求的通用函数。

编辑1:

这就是我现在拥有的..

protected List<Integer> fetchOverlapIntegers(int min, int max,
int howMany, int overlap) {
// The following code fetches unique numbers within the range
List<Integer> numbers = this.fetchRandomIntegers(min, max, howMany);

if (overlap > 0) {
int size = numbers.size();
for (int i = 0; i < overlap; i++) {
numbers.set(size - 1 - i, numbers.get(i));
}
}
Collections.shuffle(numbers);

return numbers;
}

最佳答案

只是为了笑,我为这个非常不明确的问题写了这篇文章:

public static List<Integer> weirdFunction(List<Integer> criteria, List<Integer> candidateNumbers) {
List<Integer> results = new ArrayList<Integer>();
for (int occurrenceCount = 0; occurrenceCount < criteria.size(); occurrenceCount++) {
int thisMany = criteria.get(occurrenceCount);
for (int i=0; i < thisMany; i++) {
Integer theChoice = candidateNumbers.get(new Random().nextInt(candidateNumbers.size()));
for (int ct=0; ct < occurrenceCount; ct++) {
results.add(theChoice);
}
}
}
Collections.shuffle(results);
return results;
}

它需要两个列表,一个是criteria,它基本上是一个列表,列出了将随机选择的数字放入结果中的次数(第一个被选择一次,第二个被选择一次)两次等),以及从中选择的 candidateNumbers 列表。

但是,这种方式只允许您为每个条件指定一个特定的“计数”。例如你不能有一个“两个数字出现两次”的列表,因为“出现两次”只有一个槽位。当然,您可以将其设为列表的列表或其他一些数据结构。

此外,当它拉入重复项时,它不会消除重复项。因此,如果我们的条件{1, 1, 1},它会尝试一个数字拉一次,一个数字拉两次,一个数字拉三次。但它不会检查其中任何一个是否是相同的数字 - 因此它最终可能每次都会提取相同的数字,并且有效地仅提取一个数字六次,而不是一次、两次和三次提取 3 个单独的数字。

关于java - 如何自动生成一定范围内的重叠整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4384514/

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