菜菜吃菜 2022-04-21 22:45 采纳率: 57.5%
浏览 74
已结题

c#循环递减小数,生成重复小数和指定数量


例如:1.20最大值 最小值0.23 生成30个小数:
1.20
1.20
1.20
1.20
1.19
1.19
1.19
1.18
1.18
1.18
1.18
..........
0.23
0.23
最后一位0.23,每次循环将一个数 输出,怎样实现呢?
  • 写回答

6条回答 默认 最新

  • 码老头 2022-04-22 08:26
    关注

    你这问题和我前几天回答的另一个问题有些类似,只不过你的需求是生成小数,而那个问题生成的是整数而已,请参考:

    补充示例如下:

    // 最小数
    
    var min = 23;
    // 最大数
    var max = 120;
    // 要生成数的个数
    var digits = 300;
    // 最小出现次数
    var minOccurrences = 1;
    if (digits < max - min + 1)
    {
        digits = max - min + 1;
        Console.WriteLine($"期望数小于实际数,自动补位期望数为{digits}");
    }
    
    // 生成的数的集合
    var numbers = new List<int>();
    // 先确保从最大数到最小数递减至少都有一个数
    numbers.AddRange(Enumerable.Range(min, max - min + 1).SelectMany(x => Enumerable.Repeat(x, minOccurrences)));
    // 查看结果
    Display(numbers);
    // 计算需要补位多少个数
    var fillGap = digits - (max - min + 1) * minOccurrences;
    if (fillGap <= 0)
    {
        Console.WriteLine("不需要补位");
        Console.ReadKey();
        return;
    }
    Console.WriteLine($"需要补位{fillGap}个数");
    var random = new Random();
    // 生成补位的数
    for (var i = 0; i < fillGap; i++)
    {
        numbers.Add(random.Next(min, max + 1));
    }
    Display(numbers);
    Console.ReadKey();
    
    static void Display(List<int> numbers)
    {
        var result = numbers.Select(x => x / 100.00).OrderByDescending(x=>x).ToList();
        Console.WriteLine(string.Join(",", result.Select(x=>x.ToString("0.00"))));
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(5条)

报告相同问题?

问题事件

  • 系统已结题 5月4日
  • 已采纳回答 4月26日
  • 创建了问题 4月21日

悬赏问题

  • ¥15 python的qt5界面
  • ¥15 无线电能传输系统MATLAB仿真问题
  • ¥50 如何用脚本实现输入法的热键设置
  • ¥20 我想使用一些网络协议或者部分协议也行,主要想实现类似于traceroute的一定步长内的路由拓扑功能
  • ¥30 深度学习,前后端连接
  • ¥15 孟德尔随机化结果不一致
  • ¥15 apm2.8飞控罗盘bad health,加速度计校准失败
  • ¥15 求解O-S方程的特征值问题给出边界层布拉休斯平行流的中性曲线
  • ¥15 谁有desed数据集呀
  • ¥20 手写数字识别运行c仿真时,程序报错错误代码sim211-100