public ReturnedData doStuff(Point[] withPoints) { setStuff(withPoints[0], withPoints[1], withPoints[2], withPoints[3]); ReturnedData data = new ReturnedData(); Stopwatch watch = new Stopwatch(); watch.Start(); var actuallySquare = calculateActualSquare(leftPoint_, upPoint_, downPoint_); data.actualSquare = actuallySquare; var number = new Random(); int insideCounter; double randomX; double randomY; for (var i = 0; i < 5; i++) { watch.Start(); double n = Math.Pow(10, i + 3); insideCounter = 0; for (var j = 0; j < n; j++) { randomX = minX_ + ToDouble(number.Next(0, 132767)) / 132767 * (maxX_ - minX_); //minX_ * number.Next (ToInt32 ( minX_ ), ToInt32(maxX_)); randomY = minY_ + ToDouble(number.Next(0, 132767)) / 132767 * (maxY_ - minY_); //number.Next (ToInt32 ( minY_ ), ToInt32(maxY_)); if (isInside(new Point(randomX, randomY))) { insideCounter++; } } var square = square_ * insideCounter / n; watch.Stop(); data.addSquare(square); data.addAcc(Math.Abs(square - actuallySquare) / actuallySquare); data.addPoints(n); data.addPointsInside(insideCounter); data.addTime(watch.Elapsed); watch.Reset(); } return(data); }
private void outputResult(ReturnedData dataForOutput, int textBoxNumber) { DataGridView currentDataGrid; if (textBoxNumber == 0) { currentDataGrid = objectDataGrid; } else { currentDataGrid = procedureDataGrid; } //var currentDataGrid = dataGrids[textBoxNumber]; var squares = dataForOutput.CalculatedSquares; var accs = dataForOutput.Accuracies; var numbOfPoints = dataForOutput.NumberOfPoints; var numbOfPointsInside = dataForOutput.NumberOfPointsInside; var times = dataForOutput.Times; int currentRow = currentDataGrid.RowCount - 1; for (int i = 0; i < squares.Count; i++) { currentDataGrid.Rows.Add(); currentDataGrid.Rows[currentRow].Cells[0].Value = numbOfPoints[i]; currentDataGrid.Rows[currentRow].Cells[1].Value = numbOfPointsInside[i]; currentDataGrid.Rows[currentRow].Cells[2].Value = dataForOutput.actualSquare; currentDataGrid.Rows[currentRow].Cells[3].Value = squares[i]; currentDataGrid.Rows[currentRow].Cells[4].Value = accs[i]; currentDataGrid.Rows[currentRow].Cells[5].Value = times[i]; currentRow++; } currentDataGrid.Rows.Add(); //currentDataGrid.Rows.Add(); // RichTextBox[] textBoxes = new RichTextBox[] {forOOP, forNonOOP}; // // textBoxes[textBoxNumber].Text += "\n\r\n\r"; // // var squares = dataForOutput.CalculatedSquares; // var accs = dataForOutput.Accuracies; // for (int i = 0; i < squares.Count; i++) { // textBoxes[textBoxNumber].Text += $"Площадь = {squares[i]} Погрешность = {accs[i]}\n\r"; // } // // textBoxes[textBoxNumber].Text += $"Настоящая Площадь = {dataForOutput.actualSquare}\n\rВремя Затрачено: {dataForOutput.time}"; }
public ReturnedData calculate() { ReturnedData data = new ReturnedData(); Stopwatch watch = new Stopwatch(); watch.Start(); var actualSquare = calculatedFigure_.calculateActualSquare(); data.actualSquare = actualSquare; var number = new Random(); int insideCounter; double randomX; double randomY; for (var i = 0; i < 5; i++) { watch.Start(); double n = Math.Pow(10, i + 3); insideCounter = 0; for (var j = 0; j < n; j++) { randomX = mainFigure_.minX_ + ToDouble(number.Next(0, 132767)) / 132767 * (mainFigure_.maxX_ - mainFigure_.minX_); //minX_ * number.Next (ToInt32 ( minX_ ), ToInt32(maxX_)); randomY = mainFigure_.minY_ + ToDouble(number.Next(0, 132767)) / 132767 * (mainFigure_.maxY_ - mainFigure_.minY_); //number.Next (ToInt32 ( minY_ ), ToInt32(maxY_)); if (calculatedFigure_.isInside(new Point(randomX, randomY))) { insideCounter++; } } var square = mainFigure_.square_ * insideCounter / n; watch.Stop(); data.addSquare(square); data.addAcc(Math.Abs(square - actualSquare) / actualSquare); data.addPoints(n); data.addPointsInside(insideCounter); data.addTime(watch.Elapsed); watch.Reset(); } return(data); }