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);
}
}
}
输出效果,如有帮助,请采纳
static void Main(string[] args){
int max = 20;
int min = 15;
int temp = 0;
int 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的规则是什么