7

次のようなダブルリストを想像してください

List<double> lstDouble=new List<double>{4,6,2,7,1,1};

だから私が欲しいのは、このリストのすべての要素を要素の合計(21)に分割することです。

したがって、リストは分割後に次のようになります。

lstDouble = {4/21,6/21,2/21,7/21,1/21,1/21}

つまり、要素の新しい合計 = 1

私は反復などでそれを行うことができますが、Matlab が持っているので、何か短い方法があるのだろうかと思います。私の助教授は、Matlab を学んでそれを使うように言い続けていますが、私はしたくありません :DI は C# が大好きです

ありがとうございました。

C# 4.0 WPF アプリケーション

4

5 に答える 5

12
var sum = lstDouble.Sum();
var result = lstDouble.Select(d => d / sum);
于 2012-04-04T23:59:35.437 に答える
4

LINQ でこれを行うことができます。

var sum = lstDouble.Sum();
var newLst = lstDouble.Select( x => x/sum );
于 2012-04-04T23:59:48.013 に答える
2

ラムダ式を使用します。

 lstDouble.ForEach(x => x = x/21);
于 2012-04-04T23:58:48.550 に答える
2
var sum = lstDouble.Sum();
var result = lstDouble.Select(v => v / sum);
于 2012-04-05T00:00:39.923 に答える
0

これは疑似コードです:

double sum = 0;
for(int i=0; i<array.length; i++)
   sum+=array[i];
for(int i=0; i<array.length; i++)
   array[i]=array[i]/sum;
于 2012-04-04T23:59:02.357 に答える