c# 实现获取指定范围,向下递减生成几个数值

20至15向下递减,填充数值。第一位20  最后一位15生成8个整数,这样怎么做呢?
例如;
20
19
18
17
17
16
16
15

20递减到15只能生成6个数,即:20,19,18,17,16,15,你这里要求的是生成8个数。少的两个数是依据什么规则进行补位呢?

写了一个随机数补位的规则, 不知道是不是你期望的:

// 最小数
var min = 15;
// 最大数
var max = 20;
// 要生成数的个数
var digits = 8;
// 生成的数的集合
var numbers = new List<int>();
// 先确保从最大数到最小数递减至少都有一个数
numbers.AddRange(Enumerable.Range(15, max - min + 1));
// 查看结果
Console.WriteLine(string.Join(",", numbers));
// 计算需要补位多少个数
var fillGap = digits - (max - min) - 1;
var random = new Random();
// 生成补位的数
for (var i = 0; i < fillGap; i++)
{
    numbers.Add(random.Next(min + 1, max));
}

numbers = numbers.OrderByDescending(x => x).ToList();
Console.WriteLine(string.Join(",", numbers));

第一次输出结果:

15,16,17,18,19,20
20,19,18,17,17,16,16,15

第二次输出结果:

15,16,17,18,19,20
20,19,18,18,17,17,16,15

for循环就可以吧

        for(int i = 20; i >= 15; i--)
        {
            Console.WriteLine(i);
        }
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp4
{
    class Program
    {

        static void decNum(int max, int min)
        {
            for(int i = max; i>= min; i--)
            {
                Console.WriteLine(i);
            }
        }

        static void Main(string[] args)
        {
            decNum(20, 15);
        }
    }
}


输出效果,如有帮助,请采纳

img


static void Main(string[] args){
             int max = 20int min = 15int temp = 0int radomNum = max;
             var random = new Random();
             for(int i = 0; i <=7 ; i++){
                if(i == 0){
                    Console.WriteLine(max);
                }else if(i == 7){
                    Console.WriteLine(min);
                }else{
                    radomNum = random.Next(min + 1, radomNum);
                    temp = radomNum;
                    Console.WriteLine(temp);
                }
            }
        }

这样就可以了
static void Main(string[] args)
{
int max = 20;
int min = 15;
for(int i = max; i>= min; i--)
{
Console.WriteLine(i);
}
}

    int[] GetList(int minV,int maxV,int num)
    {
        if (minV > maxV)
            return null;
        if (num < 1)
            return null;
        List<int> arr = new List<int>();
        int daV = maxV - minV + 1;
        if (num<daV)
        {
            int davMin = num / 2;
            int davMax = num - davMin;
            for (int i = 0; i < davMax; i++)
                arr.Add(maxV - i);
            for (int i = 0; i < davMin; i++)
                arr.Add(minV + i);
        }
        else
        {
            int numF = num / daV;
            for (int i = 0; i < numF; i++)
                for (int j = 0; j < daV; j++)
                    arr.Add(minV+j);
            int numS= num % daV;
            int idxS = (daV - numS) / 2;
            if (idxS != 0)
                for (int i = 0; i < numS; i++)
                    arr.Add(minV + idxS + i);
        }
        arr.Sort();
        arr.Reverse();
        return arr.ToArray();
    }

排序的方法有很多,这只是其中之一

8个整数的规则是什么,你的两个16和17的规则是什么