Нормальное распределение - C#
Формулировка задачи:
Добрейший вечерочек! Имеется некоторый список со значениями. К каждому элементу списка необходимо применить нормальное распределение со среднеквадратичным отклонением в 10%. Как это сделать? Всем заранее спасибо за любую оказанную помощь
Решение задачи: «Нормальное распределение»
textual
Листинг программы
using System; using System.Collections.Generic; using System.Drawing; using System.Windows.Forms; namespace WindowsFormsApplication367 { public partial class Form1 : Form { private List<float> values = new List<float>(); private List<float> result = new List<float>(); private static Random rnd = new Random(); public Form1() { InitializeComponent(); //создаем список значений for(int i=0;i<100;i++) values.Add(i); //добавляем к каждому значению случайную величину нормального распределения с ср.кв.откл = 10% от исх значения foreach(var val in values) { var sigma = val * 0.1f; result.Add(Gauss(val, sigma)); } } /// <summary> /// Нормальное распределение /// </summary> public static float Gauss(float center, float sigma) { return (float)(center + sigma * (rnd.NextDouble() + rnd.NextDouble() + rnd.NextDouble() + rnd.NextDouble() - 2) / 2); } protected override void OnPaint(PaintEventArgs e) { //отрисовываем var w = 5; using(var pen = new Pen(Color.Navy, w* 0.8f)) for(int i=0;i<values.Count;i++) { var x = i * w; e.Graphics.DrawLine(pen, x, 150, x, 150 - values[i]); e.Graphics.DrawLine(pen, x, 300, x, 300 - result[i]); } } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д