Está en la página 1de 21

CODIGO DE PROGRAMAS

Congruencial Lineal y prueba de medias

4 DE NOVIEMBRE DE 2020
SIMULACION
ITESHU
CONGRUNCIAL LINEAL
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Windows.Forms.DataVisualization.Charting;
namespace congruncial_linel
{
public partial class Form1 : Form
{

// Globales
int vContadorDatos = 0;
public Form1()
{
InitializeComponent();
}
//declaramos las caribales que utilizaremos
double[] arreglo = new double[1000];
string[] arraynume = new string[10000];
int index = 0;
public int semilla, modulo, incremento, multiplicador, i;
public double numAlea = 0, resultado = 0;
int contador = 0;

private void button3_Click(object sender, EventArgs e)


{
//limpiar los text y reinicar el contador
x0.Text = "";
a.Text = "";
b.Text = "";
m.Text = "";
contadorr.Text = "";
contador = 0;

chart1.Series.Clear(); // limpiamos el chart(la grafica)


chart1.Series.Add("Violations");

// asiganr nuevo datos al chart

chart1.DataBind();
chart1.Visible = true;

///borrar los puntos del chart


foreach (var series in chart1.Series)
{
series.Points.Clear();
}

///agregar las columnas

Column1.HeaderText = "i";
Column1.HeaderText = "x_i";
Column1.HeaderText = "x_i+1";
Column1.HeaderText = "u_i";
///limpiar las filas de la tabla
dataGridView1.Rows.Clear();

////borrar datos de la tabla


foreach (DataGridViewRow c in dataGridView1.Rows)

// Imaginando que el checkbox esta en la columna 1


for (int i = 0; i < modulo; i++)
{
if ((bool)c.Cells[i].Value == true)

dataGridView1.Rows.Remove(c);

}
}

private void button4_Click(object sender, EventArgs e)


{

private void chart1_Click(object sender, EventArgs e)


{

private void button2_Click(object sender, EventArgs e)


{

///preguntamos si deseamos guardar o no el archivo csv


DialogResult opcion;
opcion = MessageBox.Show("Desea Exportar el conjunto de numeros
aleatorios al formato CSV", "Guardar", MessageBoxButtons.YesNo,
MessageBoxIcon.Question);
if (opcion == DialogResult.No)
{
}
else
{
if (opcion == DialogResult.Yes)

// No guardar si no se devuelven datos


if (dataGridView1.Rows.Count == 0)
{
return;
}
else
{
StringBuilder sb = new StringBuilder();
// Encabezados de columna
string columnsHeader = "";
for (int i = 0; i < dataGridView1.Columns.Count; i++)
{
columnsHeader += dataGridView1.Columns[i].Name + ",";
}
sb.Append(columnsHeader + Environment.NewLine);
// Revise cada celda en la vista de cuadrícula de datos
foreach (DataGridViewRow dgvRow in dataGridView1.Rows)
{
// Asegúrate de que no sea una fila vacía.
if (!dgvRow.IsNewRow)
{
for (int c = 0; c < dgvRow.Cells.Count; c++)
{
// Agrega los datos de las celdas seguidos de
una coma para delimitar.

sb.Append(dgvRow.Cells[c].Value + ",");
}
// Agrega una nueva línea en el archivo de texto.
sb.Append(Environment.NewLine);
}
}
// Cargue el cuadro de diálogo para guardar archivo con la
opción predeterminada como guardar como archivo .csv.
SaveFileDialog sfd = new SaveFileDialog();

sfd.Filter = "CSV (*.csv)|*.csv";


sfd.FileName = "CL_VALOR_ " + semilla + " VALOR_ " +
multiplicador + " VALOR_ " + incremento + " VALOR_ " + modulo + ".csv";
if (sfd.ShowDialog() ==
System.Windows.Forms.DialogResult.OK)
{
// Si han seleccionado una ubicación para guardar ...
using (System.IO.StreamWriter sw = new
System.IO.StreamWriter(sfd.FileName, false))
{
// Escribe el texto del generador de cadenas en el
archivo.
sw.WriteLine(sb.ToString());
}
}
// Confirma al usuario que se ha completado.
MessageBox.Show("CSV GUARDADO.");
}
}
}

public List<double> numAleaatorios = new List<double>();


public List<double> semillas = new List<double>();

private void Form1_Load(object sender, EventArgs e)


{
//le damos forma al chart
chart1.Series["Series1"].ChartType =
System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Line;
}

private void button1_Click(object sender, EventArgs e)


{

///asiganmos variables a los text


semilla = int.Parse(x0.Text);
modulo = int.Parse(m.Text);
incremento = int.Parse(b.Text);
multiplicador = int.Parse(a.Text);

for (i = 0; i <= modulo; i++)


{
///usamos el contador para obtner el total de datos
contador = contador + 1;
///agregamos como primer numero la semilla
semillas.Add(semilla);
numAleaatorios.Add(numAlea);
//aplicamos las operaciones para obtener los num aleatorios
resultado = ((multiplicador * semilla) + incremento) % modulo;
///obtenemos los numeros aleatorios
numAlea = resultado / modulo;
///decalrmos la variable de datagridview y agregamos los valores que
iran en las celdas
DataGridViewRow fila = new DataGridViewRow();
fila.CreateCells(dataGridView1);

fila.Cells[0].Value = i;
fila.Cells[1].Value = semilla;
fila.Cells[2].Value = resultado;
//redondemamos usando 5 decimales
fila.Cells[3].Value = Math.Round(numAlea, 5,
MidpointRounding.AwayFromZero);

arraynume[index] = a.Text;
dataGridView1.Rows.Add(fila);
///aqui vemos que si la semilla en la psoicion i, se repite con la
primera, pare el proceso

contadorr.Text = Convert.ToString(contador);
semilla = Convert.ToInt32(resultado);
if (semilla == semillas[0] || semilla == semillas[i])

{
break;

}
//ajustamos lan tabla
dataGridView1.AutoResizeRowHeadersWidth(
DataGridViewRowHeadersWidthSizeMode.AutoSizeToAllHeaders);

//gaficamos los puntos, de i y de u_i

chart1.Series[0].Points.AddXY(i, numAlea);
chart1.Series[0].ChartType = SeriesChartType.FastPoint;
chart1.Series[0].MarkerStyle = MarkerStyle.Circle;
chart1.Series[0].MarkerSize = 10;

}
///si el modulo es igual al numero de datos, es de ciclo completo y si
no , no lo es
if (contador == modulo)
{
MessageBox.Show("Proceso concluido con " + a.Text + "xn-1"+ " + "+
b.Text + " mod "+ modulo + "--se obtuvieron " + contador + " numeros"+ " ---
Significa que el generador es de ciclo completo");

}
else
MessageBox.Show("Proceso concluido con " + a.Text + "xn-1" + " + " +
b.Text + " mod " + modulo + "--se obtuvieron " + contador + " numeros"+ " ---
Significa que el generador no es de ciclo completo");

}
}
}
PRUEBA DE MEDIAS

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.IO;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Windows.Forms;

using System.Windows.Forms.DataVisualization.Charting;

namespace pruebasdemedias

public partial class Form1 : Form

public Form1()

InitializeComponent();

public double numAlea = 0;

private void label3_Click(object sender, EventArgs e)

private void button1_Click(object sender, EventArgs e)


{

//new importarweb().importarExcel(dataGridView1, ",");

String ruta = "";

String str = "";

try

//nos abrira la interrfaz para poder abrir los datos

OpenFileDialog openfile1 = new OpenFileDialog();

//solamenete archivos csv

openfile1.Filter = "CSV files (*.csv)|*.CSV";

openfile1.Title = "Seleccione el archivo de Excel";

if (openfile1.ShowDialog() == System.Windows.Forms.DialogResult.OK)

if (openfile1.FileName.Equals("") == false)//Si la ruta no es vacia

//igualamos a la ruta con el archivo abierto

ruta = openfile1.FileName;

str = Path.GetFileNameWithoutExtension(ruta);

catch (Exception ex)

{
MessageBox.Show(ex.ToString());

var parsedData = new List<string[]>();

using (var sr = new StreamReader(ruta))

string line;

while ((line = sr.ReadLine()) != null)

string[] row = line.Split(new[] { "," }, StringSplitOptions.None);

parsedData.Add(row);

///seleccionamos el numero de columnas que se generaran , en nuestro caso son 4

dataGridView1.ColumnCount = 4;

for (int i = 0; i < 4; i++)

///remplazamos las aparisiones del primer caracter con el otro

var sb = new StringBuilder(parsedData[0][i]);

sb.Replace('_', ' ');

sb.Replace("\"", "");

dataGridView1.Columns[3].Name = sb.ToString();

foreach (string[] row in parsedData)

dataGridView1.Rows.Add(row);

///para que se acomoden las celdas automaticamente


dataGridView1.AutoResizeRowHeadersWidth(

DataGridViewRowHeadersWidthSizeMode.AutoSizeToAllHeaders);

dataGridView1.Rows.Remove(dataGridView1.Rows[0]);

////ponemos en visible los radiobutton

radioButton1.Visible = true;

radioButton2.Visible = true;

radioButton3.Visible = true;

private void chart1_Click(object sender, EventArgs e)

private void Form1_Load(object sender, EventArgs e)

///damos formato al chart

chart1.Series["Series1"].ChartType =
System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Line;

private void label9_Click(object sender, EventArgs e)

private void button3_Click(object sender, EventArgs e)

//ponemos todos los textos, label, imagnes en visible


button2.Visible = true;

textBox1.Visible = true;

pictureBox1.Visible = true;

textBox3.Visible = true;

textBox2.Visible = true;

textBox4.Visible = true;

label8.Visible = true;

label9.Visible = true;

private void button4_Click(object sender, EventArgs e)

public List<double> numAleaatorios = new List<double>();

private void radioButton1_CheckedChanged(object sender, EventArgs e)

//sacamos el total de numeros quu hay dentro de una columna

int numRowCount = (dataGridView1.Rows.Count) - 1;

//ponemos en visioble el boton 3

button3.Visible = true;

////declaramos variables

double total = 0;

int contador = 0;

foreach (DataGridViewRow row in dataGridView1.Rows)


{

////sacamos el valor u, sacando el promedio de todos los datos de u_i

total += Convert.ToDouble(row.Cells["Column4"].Value) / numRowCount;

textBox5.Text = Convert.ToString(numRowCount);

///dibujamos la liena que estara en el punto 0.5

for (int i = 0; i < int.Parse(textBox5.Text); i++)

StripLine linea = new StripLine

Interval = 0,

IntervalOffset = 0.5, //Aqui va el limite del valor Y

///grosor de la linea

StripWidth = 0.01,

//color

BackColor = Color.Orange

};

///dibujamos

chart1.ChartAreas[0].AxisY.StripLines.Add(linea);

///graficamos los puntos, de acurdo con i, y u_i

double grafica = 0;

int iss = 0;

grafica = Convert.ToDouble(row.Cells["Column4"].Value);
chart1.Series[0].Points.AddXY(iss, grafica);

chart1.Series[0].ChartType = SeriesChartType.FastPoint;

///el tipo de marca

chart1.Series[0].MarkerStyle = MarkerStyle.Circle;

chart1.Series[0].MarkerSize = 10;

///mandamos el valor de u, redondeado

textBox1.Text = Convert.ToString(Math.Round(total, 5, MidpointRounding.AwayFromZero));

///decalaramos las variables en cuanto al nivel de confianza de 90

double alf;

double alf2;

double za2;

alf = 0.10;

alf2 = 0.05;

za2 = 1.65;

double raiz;

raiz = 12 * numRowCount;

double intervalo1;

double intervalo2;

double asaa;

asaa = Math.Sqrt(raiz);

///sacamos el primer intervalo con la formula


intervalo1 = ((0.5 - (za2 * (1 / asaa))));

textBox2.Text = Convert.ToString(Math.Round(intervalo1, 5,
MidpointRounding.AwayFromZero));

//sacamos el segundo intervalo

intervalo2 = ((0.5 + (za2 * (1 / asaa))));

textBox3.Text = Convert.ToString(Math.Round(intervalo2, 5,
MidpointRounding.AwayFromZero));

///sacamos la validacion, si entra en ese rango de los dos intervalos

if (total >= intervalo1 && total <= intervalo2)

MessageBox.Show("No se puede rechazar que el conjunto 𝔘 tiene valor esperado de 0.5


con un nivel de aceptación de 90%");

textBox4.Text = ("No se puede rechazar que el conjunto 𝔘 tiene valor esperado de 0.5
con un nivel de aceptación de 90 % ");

else

MessageBox.Show("El conjunto no presenta una media 0.5");

textBox4.Text = ("El conjunto no presenta una media 0.5");

private void radioButton2_CheckedChanged(object sender, EventArgs e)

///se relaizar lo mismo que anteriormente se dijo, solo cambiara el nivel de confianza

int numRowCount = (dataGridView1.Rows.Count) - 1;

button3.Visible = true;

double total = 0;

int contador = 0;
foreach (DataGridViewRow row in dataGridView1.Rows)

total += Convert.ToDouble(row.Cells["Column4"].Value) / numRowCount;

textBox5.Text = Convert.ToString(numRowCount);

///dibujamos la liena

for (int i = 0; i <= int.Parse(textBox5.Text); i++)

StripLine linea = new StripLine

Interval = 0,

IntervalOffset = 0.5, //Aqui va el limite del valor Y

StripWidth = 0.01,

BackColor = Color.Orange

};

chart1.ChartAreas[0].AxisY.StripLines.Add(linea);

double grafica = 0;

int iss = 0;

grafica = Convert.ToDouble(row.Cells["Column4"].Value);

chart1.Series[0].Points.AddXY(iss, grafica);

chart1.Series[0].ChartType = SeriesChartType.FastPoint;

chart1.Series[0].MarkerStyle = MarkerStyle.Circle;

chart1.Series[0].MarkerSize = 10;
}

textBox1.Text = Convert.ToString(Math.Round(total, 5, MidpointRounding.AwayFromZero));

///sacamos alfa

double alf;

double alf2;

double za2;

alf = 0.05;

alf2 = 0.025;

za2 = 1.96;

double raiz;

raiz = 12 * numRowCount;

double intervalo11;

double intervalo22;

double asaa;

asaa = Math.Sqrt(raiz);

///sacamos el intervalo 1

intervalo11 = ((0.5 - (za2 * (1 / asaa))));

textBox2.Text = Convert.ToString(Math.Round(intervalo11, 5,
MidpointRounding.AwayFromZero));

///sacmos el intervalo 2

intervalo22 = ((0.5 + (za2 * (1 / asaa))));

textBox3.Text = Convert.ToString(Math.Round(intervalo22, 5,
MidpointRounding.AwayFromZero));

///sacmos la validacion si es que entra en los intervalos

if (total >= intervalo11 && total <= intervalo22)

{
MessageBox.Show("No se puede rechazar que el conjunto 𝔘 tiene valor esperado de 0.5
con un nivel de aceptación de 95%");

textBox4.Text = ("No se puede rechazar que el conjunto 𝔘 tiene valor esperado de 0.5
con un nivel de aceptación de 95 % ");

else

MessageBox.Show("El conjunto no presenta una media 0.5");

textBox4.Text = ("El conjunto no presenta una media 0.5");

private void radioButton3_CheckedChanged(object sender, EventArgs e)

///se realiza lo mismo, solo cambia el nivel de confianza

int numRowCount = (dataGridView1.Rows.Count) -1;

button3.Visible = true;

double total = 0;

int contador = 0;

foreach (DataGridViewRow row in dataGridView1.Rows)

total += Convert.ToDouble(row.Cells["Column4"].Value) / numRowCount;

textBox5.Text = Convert.ToString(numRowCount);

///dibujamos la liena
for (int i = 0; i <= int.Parse(textBox5.Text); i++)

StripLine linea = new StripLine

Interval = 0,

IntervalOffset = 0.5, //Aqui va el limite del valor Y

StripWidth = 0.001,

BackColor = Color.Orange

};

chart1.ChartAreas[0].AxisY.StripLines.Add(linea);

double grafica = 0;

int iss = 0;

grafica = Convert.ToDouble(row.Cells["Column4"].Value);

chart1.Series[0].Points.AddXY(iss, grafica);

chart1.Series[0].ChartType = SeriesChartType.FastPoint;

chart1.Series[0].MarkerStyle = MarkerStyle.Circle;

chart1.Series[0].MarkerSize = 10;

textBox1.Text = Convert.ToString(Math.Round(total, 5, MidpointRounding.AwayFromZero));


///sacamos alfa

double alf;

double alf2;

double za21;

alf = 0.01;

alf2 = 0.005;

za21 = 2.57;

double raiz;

raiz = 12 * numRowCount;

double intervalo1;

double intervalo2;

double asaa;

asaa = Math.Sqrt(raiz);

intervalo1 = ((0.5 - (za21 * (1 / asaa))));

textBox2.Text = Convert.ToString(Math.Round(intervalo1, 5,
MidpointRounding.AwayFromZero));

intervalo2 = ((0.5 + (za21 * (1 / asaa))));

textBox3.Text = Convert.ToString(Math.Round(intervalo2, 5,
MidpointRounding.AwayFromZero));

if (total >= intervalo1 && total <= intervalo2)

MessageBox.Show("No se puede rechazar que el conjunto 𝔘 tiene valor esperado de 0.5


con un nivel de aceptación de 99%");

textBox4.Text = ("No se puede rechazar que el conjunto 𝔘 tiene valor esperado de 0.5
con un nivel de aceptación de 99 % ");

else
{

MessageBox.Show("El conjunto no presenta una media 0.5");

textBox4.Text = ("El conjunto no presenta una media 0.5");

private void button4_Click_1(object sender, EventArgs e)

int numRowCount = (dataGridView1.Rows.Count) - 1;

///limpiamos todo, lso botones, los textos, la grafica y la tabla

dataGridView1.Rows.Clear();

button2.Visible = false;

textBox1.Visible = false;

textBox1.Text = "";

pictureBox1.Visible = false;

textBox3.Visible = false;

textBox2.Visible = false;

textBox4.Visible = false;

textBox3.Text = "";

textBox5.Text = "";

textBox2.Text = "";

textBox4.Text = "";

label8.Visible = false;

label9.Visible = false;

radioButton1.Visible = false;

radioButton2.Visible = false;

radioButton3.Visible = false;
radioButton2.Checked = false;

radioButton1.Checked = false;

radioButton3.Checked = false;

numRowCount = 0;

chart1.Series.Clear(); // changed position of clear(before Assigning the datatable)

chart1.Series.Add("Violations");

// Assigning new Data to the charts

chart1.DataBind();

chart1.Visible = true;

foreach (var series in chart1.Series)

series.Points.Clear();

///agregar las columnas

Column1.HeaderText = "i";

Column1.HeaderText = "x_i";

Column1.HeaderText = "x_i+1";

Column1.HeaderText = "u_i";

dataGridView1.Rows.Clear();

También podría gustarte