You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#如何计算上下边界区间内均匀等距分布的数值

C# 生成指定首尾等间距数值序列实现方案

你需要的是包含首尾共40个值的等差数列,相邻值间距完全相等,核心要注意40个值之间的间隔总数是39段,不是40段,这是最容易写错的逻辑点。

核心计算步骤

  • 第一步:固定入参:下边界lower = 0.5,上边界upper = 100.0,序列总长度count = 40
  • 第二步:计算固定步长:step = (upper - lower) / (count - 1),代入当前参数算得步长约为2.5513
  • 第三步:按索引逐一生成值:第i个值(i从0开始计数)为lower + step * i,i=0时对应第一个值0.5,i=39时对应第40个值100.0

可直接运行的代码示例

using System;
using System.Collections.Generic;

class EqualSpaceSequenceGenerator
{
    static void Main()
    {
        // 初始化边界参数
        double lowerBoundary = 0.5;
        double upperBoundary = 100.0;
        int totalLength = 40;

        List<double> targetSequence = GenerateSequence(lowerBoundary, upperBoundary, totalLength);

        // 结果校验
        Console.WriteLine($"序列首值:{targetSequence[0]}");
        Console.WriteLine($"序列尾值:{targetSequence[^1]}");
        Console.WriteLine($"序列总长度:{targetSequence.Count}");
        // 需要获取38个中间值直接遍历targetSequence取索引1到38的元素即可
    }

    static List<double> GenerateSequence(double lower, double upper, int count)
    {
        if (count < 2)
            throw new ArgumentException("序列长度至少为2才能覆盖首尾两个边界值");
        
        List<double> sequence = new List<double>(count);
        double step = (upper - lower) / (count - 1);

        for (int i = 0; i < count; i++)
        {
            // 最后一个值直接赋值上边界,避免浮点数累计误差导致末尾值偏差
            if (i == count - 1)
            {
                sequence.Add(upper);
            }
            else
            {
                sequence.Add(lower + step * i);
            }
        }
        return sequence;
    }
}

注意事项

  • 如果是金融等对精度要求极高的场景,可以把代码中的double类型替换为decimal,计算逻辑完全不变
  • 如果不需要存储完整序列,要获取指定位置的数值可以直接套公式计算:第n个值(n从1开始计数)= 下边界 + 步长 * (n-1)
  • 不要错误把步长计算的除数写成总个数40,那样生成的第40个值会大于100.0,不符合需求

内容的提问来源于stack exchange,提问作者hiaslfried321

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 07:57:06