Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- static Dictionary<Double, Double> calc_distribution(List<double> v, int n){
- var result = new Dictionary<double, double>();
- double wmin = v[0], wmax = v[0];
- int wcount = 0;
- int wzero = 0;
- foreach (var p in v){
- if (p == -1) continue;
- if (p == 0) ++wzero;
- if (p < wmin) wmin = p;
- if (p > wmax) wmax = p;
- ++wcount;
- }
- double delta = (wmax-wmin)/n;
- List<double> c = new List<double>();
- c.AddRange(Enumerable.Repeat<double>(0,n));
- foreach (var p in v){
- if (p < 0) continue;
- int i = Math.Min((int)(p/delta),c.Count-1);
- ++c[i];
- }
- result.Add(0,(double)wzero/wcount);
- result.Add(delta, c[0] / wcount);
- for (int i=1; i<c.Count; ++i){
- c[i] += c[i-1];
- result.Add(delta * (i + 1), c[i] / wcount);
- }
- return result;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement