viernes, 12 de febrero de 2016

Distribución uniforme en C/C++

El siguiente programa genera una ristra valores que siguen una distribución uniforme de media y desviación típica elegidas por el usuario. En otras entradas se muestra como apartir de este programa, generar otros tipos de distribuciones distintas a la uniforme (Ver aquí). Los valores de salida se guardan en un fichero de texto. El código es el siguiente:

  /*programa que genera una serie de numeros aleatorios
que siguen una distribución uniforme, pidiendo al usuario
el número de datos, y los registra en un fichero .txt*/

#include <stdio .h="">
#include <stdlib .h="">


FILE *archivo;
int i,dat;
float num, mini, maxi;

int main(void)
{
    /*creamos el archivo de texto*/
    archivo=fopen("prueba.txt","w");

    printf("GENERADOR DISTRIBUCION UNIFORME \n");
    printf("Seleccione valor minimo de la distribucion: ");
    scanf("%f", &amp;mini);
    printf("Seleccione valor maximo de la distribucion: ");
    scanf("%f", &amp;maxi);
    printf("Seleccione el numero de datos a crear: ");
    scanf("%i", &amp;dat);

    /*reiniciamos la semilla de generacion de numeros
    aleatorios (srand48 para generar numeros decimales)*/
    //srand(time(NULL));
    for (i=1; i&lt;=dat; i++)
    {
        /*(rand()/RAND_MAX) nos devuelve un numero
        aleatorio con distribucion uniforme entre 0 y 1.
        Se hace un cast para pasar el numero que esta en
        formato entero a formato coma flotante, para que
        la division no sea entre eneteros*/
        num=(float)rand()/RAND_MAX*(maxi-mini)+mini;
        fprintf(archivo, "%f \n", num);
    }

    fclose (archivo);
    return 0;
}

Salu10

1 comentario:

  1. Hola, soy Samuel Medina, creador y administrador de cobre2software.com y me gustaría que pudiesemos compartir códigos, tutoriales, ... para tener más visitas.
    Si te interesa la idea escibeme a contacto@cobre2software.com

    Un saludo

    ResponderEliminar