Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/367.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在一定范围内自动生成重叠整数_Java - Fatal编程技术网

Java 如何在一定范围内自动生成重叠整数

Java 如何在一定范围内自动生成重叠整数,java,Java,您将如何实现满足上述要求的通用功能 编辑1: 这就是我现在拥有的 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 w

您将如何实现满足上述要求的通用功能

编辑1:

这就是我现在拥有的

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)
受保护的列表获取重叠整数(int-min、int-max、,
int多少,int重叠){
//以下代码获取范围内的唯一数字
List numbers=this.fetchRandomInteger(最小、最大、多少);
如果(重叠>0){
int size=numbers.size();
对于(int i=0;i
我写这篇文章是为了解决这个非常不明确的问题:

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;
}
公共静态列表古怪函数(列表条件、列表候选编号){
列表结果=新建ArrayList();
对于(int-occurrenceCount=0;occurrenceCount
它有两个列表,一个是
标准
,基本上是一个列表,它列出了随机选择的数字在结果中的放置次数(第一个被选择一次,第二个被选择两次,等等),还有一个
候选数字的列表,从中选择它们

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


而且,当它将重复项拉入时,不会消除重复项。因此,如果我们有一个
标准
{1,1,1}
,它会尝试一次、两次、三次抽取一个数字。但它不会检查这些数字中是否有相同的数字,因此它可能会每次拉相同的数字,并且实际上只拉六次一个数字,而不是一次、两次和三次三个单独的数字。

您可以从竞争者值列表中随机拉出项目,例如:

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;
}
List number=newlist(){0,1,2,3,4,5,6,7,8,9,10};
随机r=新随机();
对于(int i=0;i<4;i++)
{
int index=r.Next()%numbers.Count;
Console.WriteLine(数字[索引]);
数字。删除(索引);
}

如果你想要一个三倍的值,只需将第一个值三倍即可。然后在最后对结果进行洗牌。

如果您真的提出了一个我们可以提供帮助的解决方案,那就太好了。因为你基本上要求我们为你工作,而你什么也不做……你的陈述我不清楚:(@Mohamed-请告诉我什么是不清楚的clear@Jason-我已经添加了我现在拥有的代码
List<int> numbers = new List<int>() { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
Random r = new Random();
for (int i = 0; i < 4; i++)
{
    int index = r.Next() % numbers.Count;
    Console.WriteLine(numbers[index]);
    numbers.RemoveAt(index);
}