Telegram Group & Telegram Channel
🧠 Задача на C#: "Сбалансированное стандартное отклонение"

Условие
Дан список чисел List<double> — это одномерное распределение значений.
Нужно определить: существует ли такой индекс, при котором массив можно разделить на две части, и стандартные отклонения этих частей отличаются не более чем на `epsilon` (например, 0.1).

Пример:


var data = new List<double> { 1.0, 2.0, 3.0, 6.0, 9.0 };
// Разделение после 2 → [1.0, 2.0], [3.0, 6.0, 9.0]
// std_left ≈ 0.707, std_right ≈ 3.0 → слишком большая разница


Формат функции:


public static bool HasBalancedStdSplit(List<double> data, double epsilon = 0.1)


Решение:


using System;
using System.Collections.Generic;
using System.Linq;

public class StatUtils
{
public static bool HasBalancedStdSplit(List<double> data, double epsilon = 0.1)
{
int n = data.Count;
if (n < 4) return false;

for (int i = 2; i <= n - 2; i++)
{
var left = data.Take(i).ToList();
var right = data.Skip(i).ToList();

double stdLeft = StandardDeviation(left);
double stdRight = StandardDeviation(right);

if (Math.Abs(stdLeft - stdRight) <= epsilon)
return true;
}

return false;
}

private static double StandardDeviation(List<double> values)
{
double mean = values.Average();
double sumSquares = values.Sum(v => Math.Pow(v - mean, 2));
return Math.Sqrt(sumSquares / (values.Count - 1));
}
}


Пример использования:


class Program
{
static void Main()
{
var data = new List<double> { 2, 4, 4, 4, 5, 5, 7, 9 };
bool result = StatUtils.HasBalancedStdSplit(data, 0.5);
Console.WriteLine($"Можно ли сбалансировать: {result}");
}
}


Что проверяет задача:

• знание статистики и работы со стандартным отклонением
• навыки эффективной работы с коллекциями
• аккуратность при вычислениях с double
• понимание требований к длине выборки для корректной статистики

Хочешь — могу добавить LINQ-only версию, визуализацию через Plotly.NET или тесты через xUnit.

@csharp_1001_notes



tg-me.com/csharp_1001_notes/683
Create:
Last Update:

🧠 Задача на C#: "Сбалансированное стандартное отклонение"

Условие
Дан список чисел List<double> — это одномерное распределение значений.
Нужно определить: существует ли такой индекс, при котором массив можно разделить на две части, и стандартные отклонения этих частей отличаются не более чем на `epsilon` (например, 0.1).

Пример:


var data = new List<double> { 1.0, 2.0, 3.0, 6.0, 9.0 };
// Разделение после 2 → [1.0, 2.0], [3.0, 6.0, 9.0]
// std_left ≈ 0.707, std_right ≈ 3.0 → слишком большая разница


Формат функции:


public static bool HasBalancedStdSplit(List<double> data, double epsilon = 0.1)


Решение:


using System;
using System.Collections.Generic;
using System.Linq;

public class StatUtils
{
public static bool HasBalancedStdSplit(List<double> data, double epsilon = 0.1)
{
int n = data.Count;
if (n < 4) return false;

for (int i = 2; i <= n - 2; i++)
{
var left = data.Take(i).ToList();
var right = data.Skip(i).ToList();

double stdLeft = StandardDeviation(left);
double stdRight = StandardDeviation(right);

if (Math.Abs(stdLeft - stdRight) <= epsilon)
return true;
}

return false;
}

private static double StandardDeviation(List<double> values)
{
double mean = values.Average();
double sumSquares = values.Sum(v => Math.Pow(v - mean, 2));
return Math.Sqrt(sumSquares / (values.Count - 1));
}
}


Пример использования:


class Program
{
static void Main()
{
var data = new List<double> { 2, 4, 4, 4, 5, 5, 7, 9 };
bool result = StatUtils.HasBalancedStdSplit(data, 0.5);
Console.WriteLine($"Можно ли сбалансировать: {result}");
}
}


Что проверяет задача:

• знание статистики и работы со стандартным отклонением
• навыки эффективной работы с коллекциями
• аккуратность при вычислениях с double
• понимание требований к длине выборки для корректной статистики

Хочешь — могу добавить LINQ-only версию, визуализацию через Plotly.NET или тесты через xUnit.

@csharp_1001_notes

BY C# 1001 notes


Warning: Undefined variable $i in /var/www/tg-me/post.php on line 283

Share with your friend now:
tg-me.com/csharp_1001_notes/683

View MORE
Open in Telegram


C 1001 notes Telegram | DID YOU KNOW?

Date: |

Telegram announces Anonymous Admins

The cloud-based messaging platform is also adding Anonymous Group Admins feature. As per Telegram, this feature is being introduced for safer protests. As per the Telegram blog post, users can “Toggle Remain Anonymous in Admin rights to enable Batman mode. The anonymized admin will be hidden in the list of group members, and their messages in the chat will be signed with the group name, similar to channel posts.”

However, analysts are positive on the stock now. “We have seen a huge downside movement in the stock due to the central electricity regulatory commission’s (CERC) order that seems to be negative from 2014-15 onwards but we cannot take a linear negative view on the stock and further downside movement on the stock is unlikely. Currently stock is underpriced. Investors can bet on it for a longer horizon," said Vivek Gupta, director research at CapitalVia Global Research.

C 1001 notes from it


Telegram C# 1001 notes
FROM USA