16

値の列挙を生成するためのEnumerable.Rangeメソッドに精通しています。しかし、私は少し違うものが欲しいです。最小値、最大値、および必要なポイント数を提供したいと考えています。

いいえ:

Method(double min, double max, int numberOfSteps)

取る

Method(0, 1000, 11);

戻るだろう

0, 100, 200, 300, 400, 500, 600, 700, 800, 900, 1000

私はこのようなものを考えています。組み込みのメソッドが必要ですが、私の検索では何も見つかりませんでした。何か不足していますか?

4

2 に答える 2

32

値をにしたいという事実を除いて、他のdoubleすべてはで行うことができますEnumerable.Range。あなたがやりたいことをするための組み込みのものはないと思いますが、上に実装するのは簡単ですEnumerable.Range

return Enumerable.Range(0, steps)
                 .Select(i => min + (max - min) * ((double)i / (steps - 1)));

あなたが常に最終的な価値に終わるように、私はそれをいくらか注意深く書きました。ただし、1つのステップだけが必要だと言った場合は、問題が発生します...それを防ぎEnumerable.Repeat(min, 1)、その場合に使用することをお勧めします。

于 2012-09-13T14:08:18.453 に答える
3

「共通の差」を計算して、系列を生成するだけです。

d =(最大-最小)/(numberOfSteps-1)

これで、シリーズを簡単に生成できます。

int [] a = new [numberOfSteps];

for(i=0; i<numberOfSteps ; i++)
{
  a[i] = min + (numberOfSteps - 1)d;
}
于 2012-09-13T14:19:23.790 に答える