Untitled

 avatar
unknown
plain_text
9 months ago
2.2 kB
3
Indexable
foreach(var obj in objectAgregate)
{
	sum_x = sum_X + obj.SeriesValue;
	sum_Y = Sum_Y + obj.Value;
	sum_XY = sum_XY + obj.SeriesValue * obj.Value;
	squareSum_X = squareSum_X + obj.SeriesValue * obj.SeriesValue;
	squareSum_Y = squareSum_Y + obj.Value * obj.Value;
}
var corr = (n * sum_XY - sum_X * sum_Y) / (Math.sqrt((n * squareSum_X - sum_X * sum_X) * (n * squareSum_Y - sum_Y * sum_Y)));

obj = mew ObjectAggregate();


--------------------------------------------------------------------------------

original: 172ms
nou: 172ms


--------------------------------------------------------------------------------

using System;
using System.Collections.Generic;

					
public class Program
{
	public static void Pearson1(List<double> list1, List<double> list2)
	{
		double sum_X = 0;
		double sum_Y = 0;
		double sum_XY = 0;
		double squareS_X = 0;
		double squareS_Y = 0;
		
		for(int i = 0; i < list1.Count; i++)
		{
			sum_X += list1[i];
			sum_Y += list2[i];
			sum_XY += list1[i] * list2[i];
			squareS_X += list1[i]*list1[i];
			squareS_Y += list2[i]*list2[i];
		}
		var corr = (list1.Count * sum_XY - sum_X * sum_Y) / (Math.Sqrt((list1.Count * squareS_X - sum_X * sum_X) * (list1.Count * squareS_Y - sum_Y * sum_Y)));
		
		
	}
	public static void Pearson2(List<double> list1, List<double> list2){
		var sum_X = list1.Sum();
		var sum_Y = list2.Sum();
		var sum_XY = list1.Zip(list2, (x,y) => x*y).ToList().Sum();
		var squareS_X = list1.Select(x => x*x).ToList().Sum();
		var squareS_Y = list2.Select(x => x*x).ToList().Sum();
		var corr = (list1.Count * sum_XY - sum_X * sum_Y) / (Math.Sqrt((list1.Count * squareS_X - sum_X * sum_X) * (list1.Count * squareS_Y - sum_Y * sum_Y)));
	}
	public static void Main()
	{	List<double> list1 = new List<double>();
		List<double> list2 = new List<double>();
		Random random = new Random();
		for (int i = 0; i < 2; i++)
            {
                for (int j = 0; j < 10000; j++)
                {
                    list1.Add(random.NextDouble());
					list2.Add(random.NextDouble());
                }
            }
	 	Pearson1(list1, list2);
	}
}
Editor is loading...
Leave a Comment