2017-02-20 9 views
0

毎分収集される1日分のデータをシミュレートするモデルのリストを生成しています。私はいくつかのデータポイントをランダムに削除して、いくつかの他のモデルを作成したいと思います。この動作を実装する方法はありますか?ランダムにデータポイントを削除する

Random rnd = new Random(); 
int RandomRemoveCount = 10; 
for (int i = 0; i < Math.Min(models.Count, RandomRemoveCount); i++) 
{ 
    models.RemoveAt(rnd.Next(models.Count)); 
} 

し、削除したいどのくらいの値にRandomRemoveCountを変更:以下

using System; 
    using System.Collections.Generic; 
    using System.Linq; 
    using System.Text; 
    using System.Threading.Tasks; 
    using MathNet.Numerics; 
    using MathNet.Numerics.Statistics; 
    public void dataGenerator() 
    { 
     int hrs = 24; 
     int minutes = 60; 
     int samplesize = hrs * minutes; // this is one day worth of data, with data created every minute 
     double mean = 50; 
     double stdev = 1; 
     int maxmodel = 10; 

     List<double[]> models = new List<double[]>(); 
     List<double> modelaverage = new List<double>(); 
     List<double> modelvariance = new List<double>(); 

     // generating normal models with different mean/deviations 
     for (int i = 1; i <= maxmodel; i++) 
     { 
      //deviations are incremented by i, to create modles of different deviations, with every model having a different center by 2*i 
      double[] model = Generate.Normal(samplesize, mean + 2*i, stdev * i); 

      models.Add(model); 
      modelaverage.Add(model.Average()); 
      modelvariance.Add(model.Variance()); 



     } 
    } 
+1

0から 'models.Length'までのランダムなインデックスを生成し、インデックスの項目を削除しますか? –

+0

どのようにランダムにする必要がありますか? – hoodaticus

+1

@hoodaticus私は、それぞれの観測が等しい確率で削除されることを望む。言い換えれば、hrs * minutes(1440回の観測)のそれぞれが50%の確率で削除される可能性があります。 – syang

答えて

0

ちょうど(私はそれが十分一目瞭然だと思います)、次のコードを追加私のコードです。 Math.Minは、削除しないようにすることです。

+0

あなたが提示したコードは、モデル内の個々の値の代わりに無作為にモデルを削除しているようですモデルレベルではなくモデルレベルでそれを行う方法はありますか? – syang

+0

まあ、配列の要素を削除することはできませんが、 'double []'の代わりに 'List '配列を使用すると、同じコードを使うことができます( 'models'を' model'で置き換えてください)。 配列を使用する必要がある場合は、リストを配列に変換できます。 – Shadowed

関連する問題