菜菜吃菜 2022-04-15 10:11 采纳率: 57.5%
浏览 122
已结题

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

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

  • 写回答

7条回答 默认 最新

  • 码老头 2022-04-15 10:38
    关注

    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
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(6条)

报告相同问题?

问题事件

  • 系统已结题 4月23日
  • 已采纳回答 4月15日
  • 修改了问题 4月15日
  • 创建了问题 4月15日