Реализовать гистограмму из результатов вычислений - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Здравствуйте господа! Возникла проблема в реализации задачи. Не пойму как собрать гистограмму из результатов вычислений. код работает (сюда прилагается) что необходимо сделать? читал некоторые варианты но не получилось. предполагалось использовать массив для его заполнения и вывода. подскажите как и что тут будет правильнее сделать
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <math.h>
#include <time.h>

double getrand(double l)
{
 return -log(1-(double)(rand())/RAND_MAX)/l;
}
 
int main()
{
 printf("Enter N:");//размер
 int i, N;
 scanf("%d", &N);
 printf("Enter l");//параметр распр
 double lambda;
 scanf("%lf", &lambda);
 srand ( time(NULL) );
 for(i = 0; i < N; i++)
  printf("%lf ", getrand(lambda));
 getch();
 return 0;
}

Решение задачи: «Реализовать гистограмму из результатов вычислений»

textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
 
 
double getrand( double l);
 
 
int main ( void )
{
 
int i, j, n;
double lambda, k;
 
 puts( "Enter n:" ); //размер
 scanf("%d", &n);
 puts("Enter l"); //параметр распр
 scanf( "%lf", &lambda );
 
 srand ( time(NULL));
 
 for( i = 1; i < n; i++ ) {
    puts("");
    printf( "%lf ",  k = getrand( lambda ) );
    for( j = 0; j < (int)k; j++ )
        if ( k >= 1 )
        putchar('*');
 }
 puts("");
 getchar();
 return 0;
}
 
double getrand (double l)
{
 return -log(1-(double)(rand())/RAND_MAX)/l;
}

Объяснение кода листинга программы

В этом коде происходит следующее:

  1. В функции main пользователю предлагается ввести размер выборки n и параметр распределения lambda.
  2. Затем происходит инициализация генератора случайных чисел с помощью функции srand(time(NULL)).
  3. В цикле for с i от 1 до n-1 выводится на экран строка, представляющая собой гистограмму.
  4. Для каждого элемента гистограммы вызывается функция getrand(lambda), которая возвращает случайное число, экспоненциально распределенное с параметром lambda.
  5. Это случайное число выводится на экран с помощью printf(%lf , k).
  6. Если случайное число больше или равно 1, то в соответствующую строку гистограммы добавляется символ * с помощью putchar('*');.
  7. В конце программы пользователю предлагается нажать любую клавишу для выхода из программы.
  8. Функция getrand использует встроенную функцию rand() для генерации случайного числа и функцию log() для вычисления натурального логарифма.
  9. Функция getrand возвращает результат вычисления -log(1-(double)(rand())/RAND_MAX)/l, который является случайным числом, экспоненциально распределенным с параметром lambda.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 4.231 из 5
Похожие ответы