static void Main(string[] args) { double[,] array = new double[500000, 2]; double mtbf = 1.0 / 100; double mttr = 1.0 / 2; MathNet.Numerics.Distributions.Exponential mtbf_expon = new MathNet.Numerics.Distributions.Exponential(mtbf); MathNet.Numerics.Distributions.Exponential mttr_expon = new MathNet.Numerics.Distributions.Exponential(mttr); for (int i = 0; i < 500000; i++) { array[i, 0] = mtbf_expon.Sample(); array[i, 1] = mttr_expon.Sample(); } //Console.WriteLine(array.Average().ToString()); int j = 0; }
private void button1_Click(object sender, EventArgs e) { // объем выборки int NSample = 1000; // число для генератора случайных чисел int Seed = 0; // параметр закона распределения double alpha = 0.12; // генератор случайных числел по экспоненциальному закону распределения // Exp... можно заменить на любой другой из имеющихся, но некоторым из них нужно больше / меньше параметров var exp = new MathNet.Numerics.Distributions.Exponential(alpha, new Random(Seed)); // создаем массив double[] data = MathNet.Numerics.Generate.LinearRange(0, 1.0, NSample); // заполняем случайными числами exp.Samples(data); // убираем старый график cartesianChart1.Series.Clear(); // создаем новый var scattter = new ScatterSeries() { // точки, поддерживающие анимацию, лучше NSamples уменьшить до 2000-1000 Values = new ChartValues <ObservablePoint>(), // маркер - ромбик PointGeometry = DefaultGeometries.Diamond }; // добавляем серию в график cartesianChart1.Series.Add(scattter); // насыщаем серию данными в цикле с анимацией каждого добавления int i = 0; foreach (var d in data) { scattter.Values.Add(new ObservablePoint(i, d)); i++; } // cartesianChart1.Series.Add(scattter); }