c# - 生成带步长值的序列

标签 c# .net linq

我有以下输入:

double zmin;
double zmax;
int count;
int N; //Total number of element in result array

我想生成一个双数组序列,其中 zmin 作为第一个值,zmax 作为最后一个值。但是从第二个值到最后一个值,它应该由 (zmax-zmin)/count 步进。

例子:

zmin = 1;
zmax = 10;
count = 3

预期结果:

double[] result = { 1, 4, 7, 10}

我的尝试:

double[] result = Enumerable.Repeat(zmin, N).Select(iv => (iv +(zmax-zmin)/count)).ToArray();

最佳答案

public static IEnumerable<double> Range(double min, double max, double step)
{
    double i;
    for (i=min; i<=max; i+=step)
        yield return i;

    if (i != max+step) // added only because you want max to be returned as last item
        yield return max; 
}

关于c# - 生成带步长值的序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7552839/

相关文章:

c# - 按下 Enter 键时中断 button_click 事件

c# - MySQLConnector/Net 的 FatalExecutionEngineError

c# maxreceivedmessagesize 不工作

c# - 绑定(bind)列表和 LINQ?

c# - 无法将 foreach 更改为 LINQ 语法

c# - 在同一个 Controller ActionResult 中运行我的存储库中的 2 个方法是否正确?

c# - 在 C# 的中继器中选择 CheckBox 时如何避免页面刷新?

c# - ASP.NET 页面不应在提交时回发整个页面

c# - 如何使用 XPathNavigator 并返回不同的节点?

.net - 您最喜欢的LINQ到对象的查询